2013-05-18 32 views
-2

我有一系列的HTML元素,如jQuery来获取匹配一个类名

<li id="1" class="jstree-unchecked jstree-open"> 
<li id="2" class="jstree-checked jstree-open"> 
<li id="3" class="jstree-unchecked jstree-open"> 
<li id="4" class="jstree-checked jstree-open"> 
<li id="5" class="jstree-checked jstree-open"> 
<li id="6" class="jstree-unchecked jstree-open"> 
<li id="7" class="jstree-undetermined jstree-open"> 

我想有类名的元素的ID的DOM元素的属性值{jstree核对jstree-undetermined}。

我曾尝试使用选择器,但在jQuery中有linq方式吗?

你能帮忙看看jQuery的样子吗? ID的列表可以用逗号分隔。

输出:“2,4,5,7”

+4

或者你可以最多一个小时花通过阅读[jQuery的API文档](http://api.jquery.com),然后立即知道如何自己做这件事。 –

+2

注意:虽然以数字开头的'id'值在[HTML中有效](http://www.w3.org/TR/html5/elements.html#the-id-attribute),但它们[没有使用(http://www.w3.org/TR/html401/types.html#type-name),仍然是[CSS中无效](http://www.w3.org/TR/CSS21/ syndata.html#value-def-identifier)等等(因为jQuery使用CSS选择器)通常最好避免它们。 –

+0

@ T.J.Crowder我认为OP实际上并没有在他的代码中使用这些值,而只是想'示例值'来演示。我当然希望至少。将任意命名的ID分配给元素没有意义。更重要的是,为元素分配连续的ID通常代表更大的问题。如果您有任何读者正在做这类事情,请考虑您的代码结构。 T.J.尽管如此,可靠的评论 –

回答

8

最好的办法是使用.map()方法:

var ids = $(".jstree-checked, .jstree-undetermined").map(function() { 
    return this.id; 
}).get(); 

console.log(ids.join()); // "2,4,5,7" 
+4

似乎不公平的是,质量差的问题似乎在阻止人们赞扬好的答案+1。 –

+0

非常好,适当的使用'.map'。我唯一需要改变的是首先调用'.get()'并使用原生的'.map',但是这个解决方案更多的是跨浏览器投诉。 –

+0

@ T.J。质量差的问题?你会怎么保持这个问题简单..? – jaxxbo