根据jsfiddel链接你想实现拖放功能。 jQuery Draggable UI已经提供了这个功能,为什么你不能使用它?
为了创建自己的方式自定义事件,你必须遵循两种备选方法
$('your selector').on("myCustomEvent", {
foo: "bar"
}, function(event, arg1, arg2) {
console.log(event.data.foo); // "bar"
console.log(arg1); // "bim"
console.log(arg2); // "baz"
});
$(document).trigger("myCustomEvent", [ "bim", "baz" ]);
在上面的例子中
在自定义事件的世界里,有两个重要的jQuery方法:。对()和.trigger()。在Events章节中,我们看到了如何使用这些方法来处理用户事件;对于本章,重要的是要记住两件事:
.on()方法将事件类型和事件处理函数作为参数。可选地,它也可以接收事件相关数据作为其第二个参数,将事件处理函数推送到第三个参数。任何传递的数据都可用于事件对象的data属性中的事件处理函数。事件处理函数总是接收事件对象作为其第一个参数。
.trigger()方法将事件类型作为其参数。或者,它也可以采用一组值。这些值将作为事件对象之后的参数传递给事件处理函数。
下面是在这两种情况下使用自定义数据。对()和.trigger(的使用的一个例子):
OR
jQuery.event.special.multiclick = {
delegateType: "click",
bindType: "click",
handle: function(event) {
var handleObj = event.handleObj;
var targetData = jQuery.data(event.target);
var ret = null;
// If a multiple of the click count, run the handler
targetData.clicks = (targetData.clicks || 0) + 1;
if (targetData.clicks % event.data.clicks === 0) {
event.type = handleObj.origType;
ret = handleObj.handler.apply(this, arguments);
event.type = handleObj.type;
return ret;
}
}
};
// Sample usage
$("p").on("multiclick", {
clicks: 3
}, function(event) {
alert("clicked 3 times");
});
在上面的例子中
这个multiclick
特殊事件将自己映射到一个标准的单击事件,但使用一个句柄钩子,以便它可以监视事件,并且只在用户单击时才传递它n元素是事件绑定期间指定次数的倍数。
挂钩将当前点击计数存储在数据对象中,因此不同元素上的处理程序不会相互干扰。它改变事件类型为原始multiclick
类型调用处理程序之前,返回之前恢复到映射的“点击”类型:
啊,这是完美的,正是我所期待的。非常感谢! – Ted
当我需要将数据作为文件传递时,我会非常感兴趣的。 http://stackoverflow.com/questions/39487340/trigger-drop-event-while-providing-the-file-data在sait jamais上。 – oldergod