第四次点击后,警报功能会多次调用

时间:2016-02-26 06:22:31

标签: javascript jquery

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

<p class="a">Click A First</p>
<p class="b">Click B</p>

第一次:
之后(点击A)&#34;现在点击B&#34;提醒一次。
之后(点击B)&#34; B点击&#34;警惕一次。

第二次:
之后(点击A)&#34;现在点击B&#34;提醒一次。
之后(点击B)&#34; B点击&#34;提醒两次。

为什么?

4 个答案:

答案 0 :(得分:0)

  

(点击B)“B点击”提醒两次。

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

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

制作它(根据Rayon的建议做出改变)

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

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

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

答案 1 :(得分:0)

因为您在点击时添加新订阅...首次点击后添加到按钮B事件,然后您在第二次点击后添加另一个事件

答案 2 :(得分:0)

简单地说,在第二次点击<nav class="navbar navbar-default"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-left"> <li> <a href="#">Free shipping over $50</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li> <a class ="lita" href="#about">Be part of THE CIRLCE</a> </li> <li> <a href="#services">JOIN </a> </li> <li> <a href="#contact">LOGIN</a> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav> 之后,B 2 onClick事件处理程序。所以你会收到2个警报。

要验证,只需对A执行第三次点击,点击A即会收到 3次提醒

答案 3 :(得分:0)

这是因为事件处理程序注册位于click的点击处理程序中,因此A事件被注册了一次。

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

  

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

jQuery API .one()

JS CODE:

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

Live Demo @ JSFiddle