将jQuery单击处理程序添加到多个元素?

use*_*non 10 jquery

我需要for在我的jQuery中有一个循环.

例:

  for(i=0;i<counter;i++)
   {
    $("div"+i+"").click(function(){//some code});
   }
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?


编辑:

此代码由OP发布,对其中一个答案发表评论:

$("#displayPanel div").click(function (){ alert($(this).attr("id")); } 

<div id="displayPanel" class="displayPanel"> 
  <div id="heading"> Display Panel </div> <br/> 
  <div id="save" class="saveClass"></div> <br/> 
  <div id="field1" class="my"> 
    <label id="labelstr1">Untitled1</label> 
    <input id="inputstr1" type="text"/> 
  </div> 
  <div id="field2" class="my"> 
    <label id="labelstr2">Untitled1</label> 
    <input id="inputstr2" type="text"/> 
  </div> 
</div>
Run Code Online (Sandbox Code Playgroud)

警报显示前两个divs 的id 而不是field1field2.


注意:

Field1Field2 divs的动态创建.

fms*_*msf 13

您可以将div与公共类放在一起

<div id="d1" class="your_css_class your_control_class">
<div id="d2" class="your_css_class your_control_class">
<div id="d3" class="your_css_class your_control_class">
<div id="d4" class="your_css_class your_control_class">
<div id="d5" class="your_css_class your_control_class">

$(".your_control_class").click(function(){
   var div_id=$(this).attr("id"); // gives you the ID of the clicked div
   if(div_id==="d1") functionForDiv1();
   else if(div_id==="d2") functionForDiv2();
   ...
});
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你拥有那个大div里面的所有东西,你可以做到:

$("#displayPanel > div").click(function(){
...
Run Code Online (Sandbox Code Playgroud)


Jos*_*lio 8

循环似乎是不必要的,因为div的选择器将应用于所有div.

$("div").click(function(){
  //this will apply to any div you click on the page
  //for example:
  $(this).css('color','red'); //change the color of the div clicked to red
});
Run Code Online (Sandbox Code Playgroud)

编辑:由于您在编辑中提到即时创建了#field1和#field2,因此您需要使用.live()来绑定click事件,如下所示:

$("#displayPanel div").live('click', function(){
  alert($(this).attr('id'));
});
Run Code Online (Sandbox Code Playgroud)


Phi*_*ert 6

例如,您可以循环遍历所有div,如下所示:

$("div").each(function() {
    $(this).hide(); // this points to the current element
});
Run Code Online (Sandbox Code Playgroud)

  • 虽然使用$ .each()看起来比使用标准for循环更容易获得性能.对于较小的循环,它可以忽略不计,但随着计数的增加,它可以慢很多倍. (2认同)