Javascript Jquery one()函数在单击时触发两次
我的JqueryJavascript Jquery one()函数在单击时触发两次,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的Jqueryone()函数在第二次单击而不是第一次单击后死亡。这是我的HTML <div class="box"> <div class="call" data-tai="5">CLICK</div> </div> 有趣的是,如果我不使用返回false,它在第一次单击后死亡。但是,冒泡会发生,它会在框元素中附加2个html标记,而不是1个。谢谢你的帮助 $('body div') 将选择这两个div并将单击处理程序附加到这两个div。当
one()
函数在第二次单击而不是第一次单击后死亡。这是我的HTML
<div class="box">
<div class="call" data-tai="5">CLICK</div>
</div>
有趣的是,如果我不使用返回false代码>,它在第一次单击后死亡。但是,冒泡
会发生,它会在框
元素中附加2个html标记,而不是1个。谢谢你的帮助
$('body div')
将选择这两个div并将单击处理程序附加到这两个div。当您单击嵌套的div时,两次单击都将被触发。使用特定的选择器来避免这种情况
$('.call')
也许可以做到这一点
将选择这两个div并将单击处理程序附加到这两个div。当您单击嵌套的div时,两次单击都将被触发。使用特定的选择器来避免这种情况
$('.call')
可能可以实现这一点。这是因为使用绑定的事件处理程序。jQuery集合中的每个元素将触发一个。由于返回false
会停止事件的传播,因此如果单击.call
元素,则不会执行父元素的单击处理程序,但父元素仍有一个活动的单击处理程序。您应该使用更具体的选择器来选择目标元素。如果单击处理程序应绑定到div.call
元素:
$('.box div.call').one(...);
现在,如果.box
元素有9个div.call
子体,那么就有9个单击处理程序!单击每个元素后,jQuery将取消绑定该特定元素的处理程序
不是对所有元素都一次,而是对每个元素一次
如果应对所有匹配元素调用一次处理程序,则可以使用的委派版本。one
方法:
$(document).one('click', '.box div.call', function() {
// ...
});
如果要委派事件并使处理程序为动态生成的元素工作一次,则可以使用.on
方法和:not
选择器:
$(document).on('click', '.box .call:not(.clicked)', function() {
$(this).addClass('clicked');
// ...
});
现在,为每个.call
元素调用一次处理程序。由于:not
排除已单击的元素。单击的类选择器与已单击的元素不匹配。这是因为使用绑定的事件处理程序。jQuery集合中的每个元素将触发一次一个。由于返回false
会停止事件的传播,因此如果单击.call
元素,则不会执行父元素的单击处理程序,但父元素仍有一个活动的单击处理程序。您应该使用更具体的选择器来选择目标元素。如果单击处理程序应绑定到div.call
元素:
$('.box div.call').one(...);
现在,如果.box
元素有9个div.call
子体,那么就有9个单击处理程序!单击每个元素后,jQuery将取消绑定该特定元素的处理程序
不是对所有元素都一次,而是对每个元素一次
如果应对所有匹配元素调用一次处理程序,则可以使用的委派版本。one
方法:
$(document).one('click', '.box div.call', function() {
// ...
});
如果要委派事件并使处理程序为动态生成的元素工作一次,则可以使用.on
方法和:not
选择器:
$(document).on('click', '.box .call:not(.clicked)', function() {
$(this).addClass('clicked');
// ...
});
现在,为每个.call
元素调用一次处理程序。由于:not
排除了已单击的元素。因此,选择器与已单击的元素不匹配。JavaScript中的事件气泡。你的代码
$('body div').one('click', '.call', function() {
}
两条电线都接上了
<div class="box"> <!-- This -->
<div class="call" data-tai="5">CLICK</div> <!-- And this -->
</div>
问题是-您希望您的点击事件放置在哪里?也许是盒子类的div
$('div.box').one('click', '.call', function() {
}
这假设.call div被动态添加到.box div
另外,如果您想停止冒泡,我建议您将事件对象传递给您的click事件并调用stopPropagation()
JavaScript中的事件气泡。你的代码
$('body div').one('click', '.call', function() {
}
两条电线都接上了
<div class="box"> <!-- This -->
<div class="call" data-tai="5">CLICK</div> <!-- And this -->
</div>
问题是-您希望您的点击事件放置在哪里?也许是盒子类的div
$('div.box').one('click', '.call', function() {
}
这假设.call div被动态添加到.box div
另外,如果您想停止冒泡,我建议您将事件对象传递给您的click事件并调用stopPropagation()
我必须使用live
事件。因为以后会有很多.call
元素,因为我的答案指向问题并提供了解决方案,你能接受这一答案吗?我必须使用实时
事件。因为以后会有很多。调用元素因为我的答案指向了问题并提供了解决方案,你能接受这一答案吗?body div
,我认为有两个div,所以两个div都会触发。请举个例子。如何使其更具体?$('.box div.call')。一个(…)
可以工作,但不适用于新加入的.call
元素。另一方面,$(document).one('click','.box div.call',function()[})
只能工作一次。我的意思是,如果我单击一个.box div.call
,事件不仅会对该元素死亡,而且对页面中的所有.box div.call
元素都会死亡。是的,这就是它应该工作的方式,我会用另一个选项更新答案。body div
,我认为有两个div,所以两个div都会触发。举个例子请问。我怎样才能使它更具体?$('.box div.call')。一个(..)
可以工作,但不适用于新加入的.call
元素。另一方面,$(文档)。一个('click','.box div.call',function()[})
只工作一次。我的意思是,如果我单击一个.box div.call
,事件不仅会对该元素,而且对页面中的所有.box div.call
元素都会死亡。是的,这就是它应该工作的方式,我会用另一个选项更新答案。“我的Jqueryone()
函数在第二次单击而不是第一次单击后死亡。”无法复制。你能创建一个