jQuery:获取绑定事件,解除绑定并再次绑定

时间:2015-01-13 09:25:31

标签: javascript jquery

我有一个jQuery扩展/插件,它将keydown事件绑定到$(document)。当我将内联弹出窗口加载到我的页面时,我需要取消绑定某些事件,然后在它关闭时再次绑定它们。

到目前为止,我所做的是使用$._data($(document)[0], "events");获取有界事件,然后将其与.off()取消绑定。这一切都按预期工作,但当我尝试再次绑定它时它不起作用 - 事件仍未解除。

以下代码似乎有什么问题?

// This code runs when popup is clicked
var keydownEventsNamespace = [];
var keydownEvents = []; 
var events = $._data($(document)[0], "events");
if(typeof events.keydown !== \'undefined\') {                 
    $.each(events.keydown, function() {
        if ("" != $(this)[0]["namespace"]) {
            keydownEventsNamespace.push($(this)[0]["namespace"]);
            keydownEvents.push($(this)[0]);
        }
    });

    $.each(keydownEventsNamespace, function(index, value) {
        for (var i = 0; i < $("table.sort_navigate").length; i++) {
            var table = "navigator" + i;
            var keydownEventName = "keydown." + table;

            if (table == value) {
                // Unbind event!
                $(document).off(keydownEventName);

                // Bind again (later to be put in another place)
                $(document).on(keydownEvents[index]);
            }
        }                            
    });
}

0 个答案:

没有答案