3

我有一个带有 eventListener 的 JavaScript 函数,用于 `dragover.

它看起来像这样:

    document.getElementById("someID").addEventListener("dragover",
        function(){ 
            //Do logic
        }, 
     false);

问题是 -someID将是一个动态元素 - 它被删除并添加到页面上。删除并重新添加后,eventListener 将不再拾取该dragover事件。我知道如何处理这种情况的唯一方法是使用 jQuery.on()

我的问题:我在 jQuery API 下找不到dragover事件......它甚至存在吗?如果不是,我如何在 jQuery 中使用它?

4

1 回答 1

3

您可以将客户拖动事件定义为,

(function(jQuery) {

//Defining drag event.
jQuery.fn.drag = function() {
    eventType = arguments[0] || 'dragstart';
    onEvent = typeof arguments[1] == 'function' ? arguments[1] : function() {
    };
    eventOption = arguments[2] || false;

    $(document).on('mouseover', $(this).selector, function() {
        if ($(this).hasClass(eventType)) {
            return;
        }
        if (! typeof eventType == 'string') {
            return;
        }

        console.log('Binding Drag Event');
        $(this).each(function() {
            $(this)[0].addEventListener(eventType, onEvent, eventOption);
            $(this).addClass(eventType);
        })
    });
}
})(jQuery);

然后您必须将其添加为插件并将其应用于所需的选择器,如下所示。

$('#someID').drag('dragover', function(){ 
        //Do logic
        alert('DRAGGING!!!!!!');
    }, 
 false);

工作小提琴http://jsfiddle.net/sadepu/aDYfP/

于 2013-08-01T09:09:29.927 回答