我有这样的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'丢失了...这太奇怪了......
有什么想法吗? 谢谢!
答案 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
应该可以正常工作。