jquery.droppable.js
2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* jQuery EasyUI 1.4.1
*
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
* To use it on other terms please contact us at info@jeasyui.com
*
*/
/**
* droppable - jQuery EasyUI
*
*/
(function ($) {
function init(target) {
$(target).addClass('droppable');
$(target).bind('_dragenter', function (e, source) {
$.data(target, 'droppable').options.onDragEnter.apply(target, [e, source]);
});
$(target).bind('_dragleave', function (e, source) {
$.data(target, 'droppable').options.onDragLeave.apply(target, [e, source]);
});
$(target).bind('_dragover', function (e, source) {
$.data(target, 'droppable').options.onDragOver.apply(target, [e, source]);
});
$(target).bind('_drop', function (e, source) {
$.data(target, 'droppable').options.onDrop.apply(target, [e, source]);
});
}
$.fn.droppable = function (options, param) {
if (typeof options == 'string') {
return $.fn.droppable.methods[options](this, param);
}
options = options || {};
return this.each(function () {
var state = $.data(this, 'droppable');
if (state) {
$.extend(state.options, options);
} else {
init(this);
$.data(this, 'droppable', {
options: $.extend({}, $.fn.droppable.defaults, $.fn.droppable.parseOptions(this), options)
});
}
});
};
$.fn.droppable.methods = {
options: function (jq) {
return $.data(jq[0], 'droppable').options;
},
enable: function (jq) {
return jq.each(function () {
$(this).droppable({ disabled: false });
});
},
disable: function (jq) {
return jq.each(function () {
$(this).droppable({ disabled: true });
});
}
};
$.fn.droppable.parseOptions = function (target) {
var t = $(target);
return $.extend({}, $.parser.parseOptions(target, ['accept']), {
disabled: (t.attr('disabled') ? true : undefined)
});
};
$.fn.droppable.defaults = {
accept: null,
disabled: false,
onDragEnter: function (e, source) { },
onDragOver: function (e, source) { },
onDragLeave: function (e, source) { },
onDrop: function (e, source) { }
};
})(jQuery);