1

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

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

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

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

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

但随后在 jQuery API 页面上有一个警告,即所有选择器非常慢。现在的问题是,使用 ("*") 选择器是否有意义。如果它对性能有那么大的影响,我宁愿不要偷懒......

有这方面经验或建议的人吗?

谢谢。

4

3 回答 3

1

从 JQuery 规范(链接):

.children( [选择器] )

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

所以在你的情况下:

 $("#container").children();
于 2012-05-10T09:20:28.640 回答
0

来自相同的文档(强调我的):

注意: all 或通用选择器非常慢,除非单独使用

那句话暗示 that$(this).find('* > p')比 慢得多$(this).find('*'),所以我认为这样做很安全,老实说,我想不出更好的方法(如高效),因为您的要求是get all elements

编辑:

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

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

于 2012-05-10T09:20:35.170 回答
0

你可以使用

    $("#container").children() 

jquery中的方法,你想循环遍历结果吗?子元素是否也包含子元素是否重要?

至于速度,如果使用 all 选择器比任何其他选择器慢,我会感到惊讶,因为它们肯定是基于结果的数量。(虽然可能是错的)

于 2012-05-10T09:21:50.733 回答