Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将jQuery单击处理程序添加到多个元素?_Jquery - Fatal编程技术网

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

是否将jQuery单击处理程序添加到多个元素?,jquery,Jquery,我需要在jQuery中有一个for循环 例如: for(i=0;i<counter;i++) { $("div"+i+"").click(function(){//some code}); } for(i=0;i例如,您可以像这样循环所有div: $("div").each(function() { $(this).hide(); // this points to the current element });

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

例如:

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

for(i=0;i例如,您可以像这样循环所有div:

$("div").each(function() {
    $(this).hide(); // this points to the current element
});

循环似乎没有必要,因为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
});
编辑:由于您在编辑中提到#字段1和#字段2是动态创建的,因此您需要使用绑定单击事件,如下所示:

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

这些
div
s是否有共同的父项、属性或其他内容?通过特定形式的ID进行匹配(即在您的案例中为
divXYZ
)可能不是最容易/最明显的事情。的API文档中有一个完整的列表,列出了可以选择元素的各种方法。选择最适合的方法,JQuery就会简化很多

下面是一个选择具有公共父级的div的示例:

$("#parent > div").click(function() {
    // some code
});
对于选择具有公共属性的div(如果它们没有公共父级,一个解决方案可以为每个div提供一个cusotm属性):


是的,您可以在jQuery中使用for循环,但是从问题的外观来看,您可能不需要它

$('div').click(function(). { ... });
您可以使用一个命令将函数绑定为所有div的事件处理程序。您还可以使用、或筛选事件处理程序应用到的div

如果希望对每个div执行不同的操作,最好在每个div上都有一个唯一的ID,然后使用

$('#divId').click(function() { ... });

你可以把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();
   ...
});
假设html是

<div class="module">
  <div id="header1">h</div>
  <div id="content1">c</div>
</div>
<div class="module">
  <div id="header2">h</div>
  <div id="content2">c</div>
</div>
<div class="module">
  <div id="header3">h</div>
  <div id="content3">c</div>
</div>

您可能想看看jQuery.each(集合、回调(indexInArray、valueOfElement))function

我创建了5个Div…最后,如果我单击任何一个Div,比如Div1,我需要做一些功能…建议我…他不一定要应用于所有Div。然后他应该使用一个类来指定哪些Div。或者像我建议的那样,使用一个自定义属性。如果单击了我的field1/field2/field3/field4中的任何一个,我想获取相应的值单独的ponding操作,如low for(i=0;i),尽管使用$。与使用标准for循环相比,each()看起来更容易获得性能命中。对于较小的循环来说,这可以忽略不计,但随着计数的增加,它可能会慢很多倍。$(“#displayppanel div”)。单击(函数(){alert($(this).attr(“id”);}显示面板

Untitled1 Untitled1显示前两个div的id,而不是field1/field2的id
<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();
   ...
});
$("#displayPanel > div").click(function(){
...
<div class="module">
  <div id="header1">h</div>
  <div id="content1">c</div>
</div>
<div class="module">
  <div id="header2">h</div>
  <div id="content2">c</div>
</div>
<div class="module">
  <div id="header3">h</div>
  <div id="content3">c</div>
</div>
$(".module").each(function(index){
   $("#header"+index).click(function(){
      $("content"+index).hide()
   });
});