在keyup事件中指定click事件处理程序会导致click事件被多次激发
Assigning click event handler inside keyup event causes the click event to be fired multiple times
只有在填充了某些表单字段时,我才试图将事件处理程序添加到锚点,如下所示:
$('#newName, #newFrom').keyup(function (e) {
if ($('#newName').val() || $('#newFrom').val()) {
$('#add-person').click(function (e) {
//Handle event, includes adding a row to a table.
$('this').off();
});
}
});
第一个事件似乎正在传播到第二个事件,因为我在表中的行数与我键入的键数相同。
我试着添加
e.stopPropagation();
但没有成功。
$('this').off();
应为$(this).off();
也可能您最好使用input
事件而不是keyup
。即使将内容粘贴到您的字段中,input
事件也会触发。
尽管如此,我还是会走另一条路:
// (cache your selectors)
var $newName = $("#newName"),
$newFrom = $("#newFrom");
// create a boolean flag
var haveNewValue = false;
// modify that flag on fields `input`
$newName.add( $newFrom ).on("input", function() {
haveNewValue = ($.trim($newName.val()) + $.trim($newFrom.val())).length > 0;
});
// than inside the click test your flag
$('#add-person').click(function (e) {
if(!haveNewValue) return; // exit function if no entered value.
// do stuff like adding row to table
});
出了什么问题:
在每个keyup
上,您都会为按钮分配一个新的(因此是多个)click
事件/s,但(更正为:)$(this).off()
只有在实际单击按钮后才会触发。
另外,使用.on()
和off.()
的更好方法(注意使用.click()
方法和.on()
方法的区别)是:
function doCoffee() {
alert("Bzzzzzzzz...BLURGGUZRGUZRGUZRG");
}
$("#doCoffeeButton").on("click", doCoffee); // Register "event" using .on()
$("#bossAlertButton").click(function() {
$("#doCoffeeButton").off("click"); // Turn off "event" using .off()
});
相关文章:
- Fancybox是否将Click事件静音
- AngularJs的ng-click$事件将子元素作为目标传递
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- jquery on click事件来显示内容
- jQuery.on-click事件不会发生
- AngularJS$apply有时不会;当在highchart中使用click事件时,t触发更新{{}}中html标记中
- 追加Jquery后的Binding Click事件不起作用
- 将click事件绑定到AngularJS指令中的子元素
- 现代网络爬虫是使用 click 事件还是直接导航到锚标记上的 href
- JavaScript on Click 事件在 img 标签上无法正常工作
- 如何覆盖jQuery所选元素的“click”事件
- 带有元素移除的Javascript remove-click事件
- 如何在不接触某些元素的情况下附加document.click事件
- 当event.target返回子元素时,如何只获取click事件的父元素
- 我可以't对jquery上的click事件使用off函数
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 当标记单击未启动时的On Click事件.如何捕获事件
- 无法从jTemplate输出中挂接Click事件
- mouseover,out and click事件不适用于折线
- 如何在angularjs中的指令中注册click事件