JQuery:如何从没有根元素的HTML数据中按类名获取div

时间:2011-09-20 19:28:20

标签: jquery css-selectors classname

我有这样的HTML数据:

<div class="class1">...</div>
<div class="class1 class2">...</div>
<div class="class3">...</div>
...
<div class="class1">...</div>
<div class="class1 class2">...</div>
<div class="class3">...</div>

如何使用class1获取div,然后使用class2获取div?

我试过这样的方式:

var divs = $(data).find('.class1');

但是它返回了空数组。

我尝试了其他方式:

var divs = $(data).filter('.class1');

但是它返回了数组

[div.class1, div.class1, ..., div.class1]. 

所以,我找不到包含'class2'的div,因为'class2'丢失了...这太奇怪了......

有什么想法吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

当您在集合上调用filter时,只会获得与该过滤器匹配的元素。但是,原始集合未被修改。

您所要做的就是将原始集合存储在变量中,当您想要按.class2进行过滤时,请回头查看:

var all = $(data),
    class1 = all.filter('.class1'),
    class2 = all.filter('.class2');

答案 1 :(得分:1)

$("div[class*='class1']");

要测试,请运行以下代码:

var divs = $("div[class*='class1']");

divs.each(function() {
    alert($(this).text());
});

答案 2 :(得分:0)

find不起作用的原因可能是因为您的HTML字符串没有根元素,因此搜索是在每个元素内部执行的。如果您将HTML包含在包含元素中,find应该可以正常工作。