Javascript 第四次单击后多次调用警报功能 $(文档).ready(函数(){ $('.a')。单击(函数(){ 另一个(); }) }); 函数另一个(){ 警报(“现在单击B”); $('.b')。单击(函数(){ 警报(“点击B”); }) } 首先单击一个 单击b

Javascript 第四次单击后多次调用警报功能 $(文档).ready(函数(){ $('.a')。单击(函数(){ 另一个(); }) }); 函数另一个(){ 警报(“现在单击B”); $('.b')。单击(函数(){ 警报(“点击B”); }) } 首先单击一个 单击b,javascript,jquery,Javascript,Jquery,第一次: (单击A)“现在单击B”警报一次后。 (单击B)后,“B单击”警报一次 第二次: (单击A)“现在单击B”警报一次后。 (单击B)后,“B单击”警报两次 为什么? (单击B)后,“B单击”警报两次 因为每次单击A,都会将另一个事件处理程序绑定到B 所以,第二次有两个点击事件处理程序 制作(根据人造丝的建议进行更改) 如果对必须绑定B上的事件的时间没有限制,则在document.ready事件本身中分配事件 function another(){ alert('Now Click B

第一次:
(单击A)“现在单击B”警报一次后。
(单击B)后,“B单击”警报一次

第二次:
(单击A)“现在单击B”警报一次后。
(单击B)后,“B单击”警报两次

为什么?

(单击B)后,“B单击”警报两次

因为每次单击
A
,都会将另一个事件处理程序绑定到B

所以,第二次有两个点击事件处理程序

制作(根据人造丝的建议进行更改)

如果对必须绑定B上的事件的时间没有限制,则在
document.ready
事件本身中分配事件

function another(){
  alert('Now Click B');
  $('.b').one("click",function(){
    alert('B Clicked');
  })
}

因为您在单击时添加了新订阅。。。在第一次单击后,您添加到按钮B事件,然后在第二次单击后添加另一个事件。简单地说,在第二次单击
A
后,有2个
B
的onClick事件处理程序。因此,您将收到2个警报


要进行验证,只需对
A
执行第三次单击,当单击
B

时,您将收到3个警报,这是因为
单击
事件额外注册了一次,因为事件处理程序注册在
A
的单击处理程序中

您可以使用jquery
.one()
,它只将事件处理程序附加到指定元素一次

将处理程序附加到元素的事件。对于每个事件类型,每个元素最多执行一次处理程序

JS代码:

$(document).ready(function(){
  $('.a').click(function(){
    another();
  })
  $('.b').click(function(){
    alert('B Clicked');
  })
});

每次单击…事件都会被附加…因为每次单击b上的“单击事件”都会被注册。我可以知道您的预期输出是什么吗?是否有任何建议@RayonDabre???请参考Gurvinder372提供的答案为什么不:
$(document).ready(function(){$('.a')。click(function(){alert('a Clicked');});$('.b')。单击(函数(){alert('b Clicked');})@RayonDabre我假设OP只想在单击A之后将事件绑定到B。无论如何,我也会建议这样做。感谢您不用解除绑定和绑定事件,我们只需使用一个标志并绑定一次事件,@niscalkumarbc然后我们需要将标志存储在某个地方。另外,我不知道OP为什么这么做是为了尽量减少代码标志:)@gurvinder372,我想我看错了……OP是在寻找条件事件绑定,我想。。。。
$(document).ready(function(){
  $('.a').click(function(){
    another();
  })
  $('.b').click(function(){
    alert('B Clicked');
  })
});
function another(){
   alert('Now Click B');
   $('.b').one('click',function(){
      alert('B Clicked');
   });
}