jQuery Button.click()事件被触发两次

我有这个代码的以下问题:

<button id="delete">Remove items</button> $("#delete").button({ icons: { primary: 'ui-icon-trash' } }).click(function() { alert("Clicked"); }); 

如果我点击这个button,警报显示两次。 这不仅仅是这个特定的button,而是我创build的每一个button。

我究竟做错了什么?

你目前的代码工作,你可以在这里试试: http : //jsfiddle.net/s4UyH/

您在示例之外触发另一个.click() ,请检查其他处理程序,该处理程序触发该元素上的click事件。

在这种情况下,我们可以做到以下几点

 $('selected').unbind('click').bind('click', function (e) { do_something(); }); 

我最初的事件发生了两次,当页面刷新时,它发生了四次火灾。 在我find谷歌search之前,经过了许多无果的时间。

我还必须说,代码最初一直在工作,直到我开始使用JQueryUI手风琴小部件。

我也经历过奇怪的行为。 所以对我来说,“回报虚假”就是这样做的。

  $( '#selector' ).on( 'click', function() { //code return false; }); 

如果你使用

 $( document ).ready({ }) 

要么

 $(function() { }); 

不止一次,点击function将触发尽可能多的次数。

你可以试试这个。

  $('#id').off().on('click', function() { // function body }); $('.class').off().on('click', function() { // function body }); 

我有同样的问题,并尝试了一切,但没有奏效。 所以我用下面的技巧:

 function do_stuff(e) { if(e){ alert(e); } } $("#delete").click(function() { do_stuff("Clicked"); }); 

你检查这个参数是不是null比你的代码。 所以当function第二次触发时,它会显示你想要的。

我发现绑定一个element.click在一个不止一次发生的函数中会排队,所以下次单击时,它会触发多次执行绑定函数。 新人错误可能在我的最后,但我希望它可以帮助。 TL,DR:确保你绑定一个只发生一次的设置function的所有点击。

如果您使用Browsersync ,请确保您没有运行多个实例。 它将为每个运行浏览器同步的选项卡激发一个事件。

就像尼克想说的,外面的东西是两次触发事件。 为了解决这个问题,你应该使用event.stopPropagation()来防止父元素冒泡。

 $('button').click(function(event) { event.stopPropagation(); }); 

我希望这有帮助。