2011-08-27 49 views
1

我有一个div元素无处不在的页面。 什么是使用自定义ID标签获取div元素的最佳方式。 例如<div rIndex="34">john</div><div rIndex="45">Chris</div>jquery - 获取一组匹配的dom元素

我正在使用此函数来查找具有rIndex属性的div元素。我想把这些div元素放到一个数组中,这样我就可以做进一步的处理。

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

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

但是,警报消息返回给我一个函数定义,而不是元素。

回答

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] 
+0

很酷,但我不只是想要的价值,我想存储匹配的div到数组中。当我对结果做出警报时,我不会收到div,但匿名函数 – airnet

+0

我已更新答案,尝试做你想做的事。 – ipr101

+0

完美... thx :) – airnet

3

自定义属性是这样的(W3C)完成:

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

你可以简单地使用jQuery选择:

$('div[rIndex]') 

但是,作为一个侧面说明,我可以建议声明的div中这种方式代替:

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

然后使用这个选择器:

$('div[data-index]') 

然后你的代码符合html标准。

1

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

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

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

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

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