假设我有一个内容不确定的jQuery对象(来自something
可能是动态选择器或HTML字符串):
var $o = $(something);
现在,例如,如何计算jQuery对象本身中包含<{1>}的对象数(即没有包含元素的后代)?我能做到
<div>
其他想法?
答案 0 :(得分:7)
.filter()
需要一个选择器,所以
$o.filter('div')
实际上应该足够了。
当然你可以为它创建一个插件:
$.fn.count = function(selector) {
return this.filter(selector).length;
};
答案 1 :(得分:6)
有两种方法可以计算jQuery对象中某种类型的元素。您使用哪种方法取决于您对in
的定义。
.find()
.length - 查找符合模式的jQuery对象所代表的DOM元素的所有后代。也可以使用$(this, that)
形式的上下文在其中找到它。它是使用.find()
.filter()
。length - 减少jQuery对象所代表的选定DOM元素集,使其仅包含与模式匹配的元素。
如果您要在对象中搜索后代,请使用 .find()
或上下文:
$o.find("div").length
或
$("div", $o).length
例如
<li>
<div></div>
<div></div>
</li>
对于上述内容:
$("li").find("div").length // This is 2
$("div", "li").length // This is 2
$("li").filter("div").length // This is 0
如果您想按规则减少所选项目的数量,请使用 .filter()
<div class="a"></div>
<div></div>
对于上述
$("div").filter(".a").length // This is 1
$("div").find(".a").length // This is 0
$(".a", "div").length // This is 0
jsFiddle 同时显示.find()
和.filter()
。