jQuery - 只需绑定一次事件



当触发来自不同元素的另一个事件时,我将事件绑定到元素时遇到了很多麻烦。我的HTML是一个文本框,当添加一些文本时,它会创建一个带有重复的上下文菜单。由于此菜单是动态创建的表,因此我想将单击事件绑定到其元素。所以,这是我的代码:

$("#TextBox").on("keypress", function(e) {
    $("#Menu").find("td").on("click", function(event) {     
        event.stopPropagation();
        event.preventDefault(); 
        processText(event, $(this).children().text()); 
    });
    $(this).off(e);
});

但是,我不知道为什么,它不起作用。另外,我尝试创建一个变量并将其用作标志,但也不起作用。

如果我只是不解绑它,点击事件会在用户按下某个键时触发多次。但是我想解绑它,所以它只执行一次。

编辑:错误是我正在处理不正确的事件。我不得不处理"键up",因为在"按键"中表格仍然不存在。

如果你真的只希望事件触发一次,你可以用 $.one() 绑定。

http://api.jquery.com/one/

因为您已经在使用 on 函数。使用 on 的备用版本(用于委派事件处理)将事件处理程序绑定到动态添加的元素:

按如下方式使用 on 函数:

$("#TextBox").on("keypress", function(e) {
    $(this).off("keypress");
});
$("#Menu").on("click", "td", function(event) {     
        event.stopPropagation();
        event.preventDefault(); 
        processText(event, $(this).children().text()); 
});

查看此链接以获取更多信息:http://api.jquery.com/on/#direct-and-delegated-events

最新更新