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

看起来像这样:

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

问题是-someID将是一个动态元素-它将被删除并添加到页面上。删除并重新添加后,eventListener将不再拾取dragover事件。我知道如何处理这种情况的唯一方法是使用jQuery的.on()
我的问题:我在jQuery API下找不到dragover事件...它甚至存在吗?如果没有,如何在jQuery中使用它?

最佳答案

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

(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/

关于javascript - jQuery-使用 “dragover”等JS事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17969976/

10-11 14:16