jquery - 获取一组匹配的dom元素

时间:2011-08-27 16:26:05

标签: jquery jquery-selectors

我到处都有div元素的页面。 使用自定义ID标记获取div元素的最佳方法是什么。 例如<div rIndex="34">john</div><div rIndex="45">Chris</div>

我正在使用此函数来查找具有rIndex属性的div元素。我想将这些div元素放入一个数组中,以便进一步处理。

$("div").each(function(index){

      if($(this).attr("rindex"))   
      {   
     results[index] = $(this);   
      }   
});
alert(results[0])

但警告信息正在返回一个函数定义,而不是元素。

4 个答案:

答案 0 :(得分:3)

自定义属性就像这样(w3c):

<div data-rIndex="34">john</div>

答案 1 :(得分:1)

您可以简单地使用此jQuery选择器:

$('div[rIndex]') 

但是,作为附注,我是否可以建议以这种方式声明div:

<div data-index="34"></div>

然后使用此选择器:

$('div[data-index]')

然后您的代码符合HTML标准。

答案 2 :(得分:1)

Has Attribute选择器支持自定义属性:

alert($("div[rIndex]")[0]);

那就是说,尤达是对的:在这种情况下,你应该更喜欢HTML5中定义的custom data attributes

<div data-rIndex="34">john</div>

alert($("div[data-rIndex]")[0]);

答案 3 :(得分:0)

HTML

<div data-rIndex="34">john</div>
<div data-rIndex="45">Chris</div>

JavaScript

var results = [];
$("div[data-rIndex]").each(function(index){

  if($(this).data("rindex"))   
  {   
 results[index] = $(this);   
  }   
}); 
alert($(results[0]).html()); //should alert 'john'

我整理了你的HTML,在这里进行了演示 - http://jsfiddle.net/aerj4/

如果你想要一个div数组,你可以这样做 -

var results = [];
$("div[data-rIndex]").each(function(index){

  if($(this).data("rindex"))   
  {   
 results[index] = this;   
  }   
}); 
alert(results[0])//alerts [object HTMLDivElement]