Javascript jquery-选择唯一id

Javascript jquery-选择唯一id,javascript,jquery,html,Javascript,Jquery,Html,我不熟悉jquery 我用php生成了HTMLdiv,并给每个div一个唯一的id <div id=div1>text</div> <div id=div2>text</div> <div id=div3>text</div> ... 但是我必须使用很多选择器,因为每个id都是唯一的。最近我用了这样的东西 <div ... onclick=getElem(id)></div> function g

我不熟悉jquery

我用php生成了HTMLdiv,并给每个div一个唯一的id

<div id=div1>text</div>
<div id=div2>text</div>
<div id=div3>text</div>
...
但是我必须使用很多选择器,因为每个id都是唯一的。最近我用了这样的东西

<div ... onclick=getElem(id)></div>

function getElem(id){
     var elem=$('#div'+id);
} 

函数getElem(id){
var elem=$(“#div”+id);
} 

使用
onclick
好吗?

我说不出你真正的用例是什么,但你无论如何都不需要ID。为类指定要处理单击的所有元素:

<div class="some-group"></div>
<div class="some-group"></div>
<div class="some-group"></div>

向div组添加一个类

<div id="div1" class="someClass">text</div>
<div id="div2" class="someClass">text</div>
<div id="div3" class="someClass">text</div>
...

向div元素添加一个类:

<div id="div1" class="myDivClass">text</div>
<div id="div2" class="myDivClass">text</div>
<div id="div3" class="myDivClass">text</div>
或者您可以同时对所有元件进行操作

$('.myDivClass').text("set text on all elements");
这意味着您可以使用以下命令将click回调设置为all:

$('.myDivClass').click(function(){
  // Your click handler for ALL elements with myDivClass

});
或单独在每个项目上,允许包括一些额外的处理

$('.myDivClass').each(function(){
   // Here u could do some checks
   var id = $(this).attr('id'); // or $(this).prop('id') // depends on jquery version

   if(id !== "div1"){
      $(this).click(function(){
        // Click handler for each item
      });
   }
});

对这绝对是好的。从技术角度来看,这可能是好的,但是如果您使用jQuery,并通过代码处理大多数事情,那么您应该保持一致,并通过代码使用事件处理和回调分配。如果你开始将回调放在html属性中,你就有可能失去对代码增长的控制。。。是的,你应该使用ID,而不是选择一组元素。我不是建议不要使用ID,我是建议不要将它们全部用作选择器。除了选择器之外,您还使用ID做什么?ID速度很快,在很多情况下都有意义,即使是在有组的情况下。除非有未知数量的元素,否则使用ID。表示一组可变元素是类背后的确切推理。ID用于选择特定的dom元素。您可以使用其ID选择组中的每个元素,但这并不意味着您应该这样做。就选择器而言,它们的性能更高,但强制ID执行类作业的开销……是的,当然。不过,如果有3个元素(如#页眉、#内容、#页脚),那么按id而不是按类选择所有3个元素仍然是有意义的。上面的“onclick解决方案”或您的代码哪一个更快?或者可以忽略速度?我想说,速度在这一点上不是问题。首先制定解决方案,然后在逻辑明确后进行优化。
$('.myDivClass').each(function(){
   // Process each item found that use the myDivClass 
   $(this).text("set a new text");
});
$('.myDivClass').text("set text on all elements");
$('.myDivClass').click(function(){
  // Your click handler for ALL elements with myDivClass

});
$('.myDivClass').each(function(){
   // Here u could do some checks
   var id = $(this).attr('id'); // or $(this).prop('id') // depends on jquery version

   if(id !== "div1"){
      $(this).click(function(){
        // Click handler for each item
      });
   }
});