click()事件在jquery中调用两次

我设置了一个链接元素,并在jQuery中调用它的点击事件,但点击事件调用两次,请参阅下面的jQuery代码。

$("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

请指教。

谢谢。

确定并检查你是否没有意外地在你的HTML页面中包含你的脚本两次。

点击之前解除绑定;

 $("#link_button").unbind('click'); $("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

尝试这个:

 $("#btn").unbind("click").click(function(){ //your code }); 

我试过了, e.stopImmediatePropagation() ; 这似乎为我工作。

在我的情况下,我用下面的脚本来解决这个问题

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

off()绑定所有绑定到#id的事件。 如果您只想解除绑定click事件,则使用off('click')

在调用.on()之前,只需调用.off()即可。

这将删除所有事件处理程序:

 $(element).off().on('click', function() { // function body }); 

只删除注册的“点击”事件处理程序:

 $(element).off('click').on('click', function() { // function body }); 

两个点击问题的一个相当常见的解决scheme是放

 e.stopPropagation() 

在你的函数的最后(假设你使用function(e) )。 这可以防止事件冒泡,从而导致第二次执行该function。

请试试这个

 $('#ddlSupervisor').live('change', function (e) { if (e.handled !== true) { //this makes event to fire only once getEmployeesbySupervisor(); e.handled = true; } }); 

我有同样的问题,但你可以尝试改变这个代码

 $("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

对此:

 $("#link_button").button(); $("#link_button").unbind("click").click(function () { $("#attachmentForm").slideToggle("fast"); }); 

对我来说,这个代码解决了这个问题。 但请小心,不要在您的HTML页面中意外包含您的脚本两次。 我认为如果你正确地做了这两件事情,你的代码将正常工作。 谢谢

这绝对是一个错误,特别是它的FireFox。 我search了很多尝试所有上述的答案,并最终得到它作为许多专家在SO的错误。 所以,我终于通过声明variables来想出这个想法

 var called = false; $("#ColorPalete li").click(function() { if(!called) { called = true; setTimeout(function(){ //<-----This can be an ajax request but keep in mind to set called=false when you get response or when the function has successfully executed. alert('I am called'); called = false; },3000); } }); 

这样,它首先检查函数是否被调用。

这段代码包含没有什么不好的。 这是@ karim告诉你脚本的另一部分

添加e.preventDefault(); 在我的function开始为我工作。

调用unbind解决了我的问题:

 $("#btn").unbind("click").click(function() { // your code }); 

有同样的问题。 这对我有用 –

 $('selector').once().click(function() {}); 

希望这有助于某人。

我被一个匹配多个项目的select所欺骗,所以每个都被点击。 :first帮:

 $('.someClass[data-foo="'+notAlwaysUniqueID+'"]:first').click(); 

我也有FF这个问题。 然而,我的标签绑定了<a>标签。 虽然<a>标签没有去任何地方,它仍然做了双击。 我replace了<span>标记的<a>标记,双击问题消失了。

另一种select是如果链接不在任何地方,则完全删除href属性。

我遇到这个问题,因为我的$(elem).click(function(){}); 脚本被放置在一个设置为style="display:none;"的div中 。

当css显示切换到阻塞时,脚本将再次添加事件侦听器。 我将脚本移到了单独的.js文件,重复的事件侦听器不再启动。

当我在jquery的加载页面上使用这个方法时,我写$('#obj').off('click'); 设置点击function之前,所以泡沫不会发生。 为我工作。

在我的情况下,它在Chrome中工作正常,IE浏览器两次调用.click() 。 如果这是你的问题,那么在调用.click()事件之后,我通过返回false来修复它

  $("#txtChat").keypress(function(event) { if (event.which == 13) { $('#btnChat').click(); $('#txtChat').val(''); return false; } }); 

我简单的答案是把点击绑定变成一个函数,并从元素的onclick调用 – 一个治疗! 而上述都没有

我不知道为什么,但我有这个问题

 $(document).on("click", ".my-element", function (e) { }); 

当我改变它

 $(".my-element").click(function () { }); 

问题解决了。 但是,在我的代码中绝对是错误的。

就我而言,HTML的布局是这样的:

 <div class="share"> <div class="wrapper"> <div class="share"> </div> </div> </div> 

而我的jQuery是这样的:

 jQuery('.share').toggle(); 

它让我困惑,因为没有任何事情发生。 问题是,内部的.share s toggle将取消外部.share s toggle