选择包含div的所有元素

时间:2012-05-10 09:17:03

标签: jquery performance jquery-selectors

我想选择容器中的所有元素,例如一个div。容器内的元素类型无关紧要,应该可以选择那些没有分配任何类的元素,以保持尽可能灵活。 我想将这个快速编写的“logo-ticker”构建为jQuery插件:

http://apkunden.de/dev/index.html

目标是使其可以与任何html元素一起使用,而不仅仅是imgs。我知道实现这一目标的一种非常常见的方法是使用分配给任何相关元素的类。但事实证明我是一个懒惰的人,我不想分配所有这些课程:D。

现在我知道jQuery中有all选择器(“*”),我想做这样的事情:

    $("#container").find("*");

但是在jQuery API页面上有一个警告,表明all选择器非常慢。现在的问题是,如果使用(“*”)选择器是有意义的。如果它对性能有太大影响,我宁愿不要懒惰......

对此有经验或建议的人吗?

THX。

3 个答案:

答案 0 :(得分:1)

来自JQuery Spec(link):

  

.children([selector])

     

描述:获取匹配元素集中每个元素的子元素,可选择通过选择器进行过滤。

所以在你的情况下:

 $("#container").children();

答案 1 :(得分:0)

来自同一个docs(强调我的):

  

警告:全选或通用选择器非常慢,除非单独使用

这句话意味着$(this).find('* > p')$(this).find('*')慢得多,所以我认为这样做是非常安全的,老实说,我认为没有更好的(因为效率更高),因为你的要求是get all elements

编辑:

根据我的评论,来自children()文档:

  

.children()方法与.find()的区别仅在于.children()   在.sind()可以遍历时沿DOM树向下移动一个级别   在多个级别选择后代元素(孙子,   等)。

答案 2 :(得分:0)

你可以使用

    $("#container").children() 
在jquery中的

方法,你想循环结果吗?如果子元素还包含子元素,这是否重要?

至于速度,如果使用all选择器,ID会比任何其他选择器慢,因为它们肯定是基于结果的数量。 (也许是错的)