2012-11-08 71 views
0

我为我的英语不好抱歉..
后,我做了一个jQuery的功能,当用户调用的功能,它的创建页面上的元素的jQuery功能。到elemet我做了一个jQuery的单击事件及其做工精细,
但是,如果用户调用函数3次这样的:如果用户点击第一个元素做元素创建

$.someFunction(); 
$.someFunction(); 
$.someFunction(); 

,它会做3次什么在click的事件回调函数,并且如果用户点击第二个元素,它将执行click事件回调函数中的2倍,并且如果用户在最后一个元素上执行它,则它将执行一次。
我希望当用户点击每个元素时,回调函数只会发生一次。
我该如何解决这个问题?

+4

显示这是如何实现的? – Neal

+2

您可能会根据'class'或'name'属性来绑定事件,这会导致事件绑定到每个元素'n'次,因为您将使用'class'或''' name“属性并添加另一个”click“事件。我会建议给每个动态创建的元素一个唯一的'id',并以这种方式来绑定事件。 – Chase

+0

你应该展示如何在你的函数内部设置事件点击处理函数或者它是在哪里设置的 –

回答

0

尝试做这样的事情:

$(".element").unbind("click").bind("click", function(){ 
    alert('a'); 
}); 
+0

它工作了!!!!!!!!!!!!!非常感谢! – Skizo

1

绑定事件所创建的元素,而不是现有的所有元素。

$.somefunction = function() { 
    $("<div />").text("click me!").bind("click",function(){ 
     alert("Hello World!"); 
    }).appendTo("body"); 
} 
0

即使简单:使用jquery.on

$('.some-selector').on('click', function() 

{ 
// do your work here 
}); 

随着(在老版本的“现场”),它会绑定到任何元素,当它被添加到那选择匹配,而不管的jQuery DOM。

+0

您的.on语法不是创建委托事件的语法。你的代码和'$('。some-selector')是一样的。click(function(){' –