如何计算jQuery对象中某种类型的所有元素?

时间:2010-09-17 18:11:08

标签: jquery

假设我有一个内容不确定的jQuery对象(来自something可能是动态选择器或HTML字符串):

var $o = $(something);

现在,例如,如何计算jQuery对象本身中包含<{1>}的对象数(即没有包含元素的后代)?我能做到

<div>

其他想法?

2 个答案:

答案 0 :(得分:7)

.filter()需要一个选择器,所以

$o.filter('div')

实际上应该足够了。

当然你可以为它创建一个插件:

$.fn.count = function(selector) {  
    return this.filter(selector).length; 
}; 

答案 1 :(得分:6)

有两种方法可以计算jQuery对象中某种类型的元素。您使用哪种方法取决于您对in的定义。

  1. .find() .length - 查找符合模式的jQuery对象所代表的DOM元素的所有后代。也可以使用$(this, that)形式的上下文在其中找到它。它是使用.find()

  2. 实现的
  3. .filter()。length - 减少jQuery对象所代表的选定DOM元素集,使其仅包含与模式匹配的元素。


  4. 如果您要在对象中搜索后代,请使用 .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()