当触发来自不同元素的另一个事件时,我在将事件绑定到元素时遇到了很多麻烦。 我的HTML是一个文本框,当添加一些文本时,它会创建一个带有suggerence的上下文菜单。由于此菜单是动态创建的表,我想将click事件绑定到其元素。所以,这是我的代码:
$("#TextBox").on("keypress", function(e) {
$("#Menu").find("td").on("click", function(event) {
event.stopPropagation();
event.preventDefault();
processText(event, $(this).children().text());
});
$(this).off(e);
});
但是,我不知道为什么,它不起作用。此外,我尝试创建一个变量并将其用作标志,但也不起作用。
如果我不解除绑定,则会在用户按下某个键时多次触发click事件。但是我想解开它,所以它只执行了一次。
编辑:错误是我正在处理错误的事件。我不得不处理“keyup”,因为在“keypress”中,表仍然不存在。
答案 0 :(得分:4)
如果你真的只想要触发一次事件,你可以用$ .one()绑定。
答案 1 :(得分:2)
由于您已经在使用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