单击div in for循环获取单个事件

时间:2014-05-03 14:08:54

标签: javascript jquery

var id=100;

for(var i=0;i<5;i++) {
 $("#divtext_"+id).click(function(e) {
   onClicked();
 });
}

function onClicked() {
  alert("Clicked")
}
  • 我尝试了.on()delegate()one()事件。
  • 当我点击div时,onClicked()函数提供了alert() 4次。
  • 当我点击div text / image以获得一次功能/警报时,是否可以使用?

4 个答案:

答案 0 :(得分:0)

这就是我期望代码在jquery下运行的方式,这里的选项是使用.unbind(http://api.jquery.com/unbind/)删除此div的所有先前指令或检查事件是否已经这已经包含在这里了。 How to check if click event is already bound - JQuery

答案 1 :(得分:0)

假设您的ID为divtext_0 ... divtext_4

的div
for(var i=0;i<5;i++) {
 $("#divtext_"+i).click(function(e) {
   onClicked();
 });
}

function onClicked() {
  alert("Clicked")
}

目前您正在向div divtext_100添加多个点击处理程序 - 而不是向多个div添加一个点击处理程序。

如果没有看到你的HTML,很难说什么是最好的 - 但如果你给所有的div一个类,例如'clickable',然后你可以避免任何循环,并使该类可点击任何div。

<div class="clickable"></dvi>

你可以这样做。

$(".clickable").click(function(e) {
  onClicked();
});

function onClicked() {
  alert("Clicked")
}

答案 2 :(得分:0)

试试这个:

$("#divtext_"+id).one("click", function(e){
  onClicked();
});

答案 3 :(得分:0)

你可以使用     $(&#34; #divtext _&#34 + ID).off(&#39;单击&#39;,onClicked)。在(&#39;单击&#39;,onClicked);

function onClicked() {
    alert("Clicked")
}

&#39; .off&#39;防止多次绑定onClicked函数。我认为使用.off可以解决您的问题。 如果您使用的是旧版本的jquery,请使用.unbind