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
。