3

.find()函数在 IE 7 及以下版本中运行非常缓慢,经常导致挂起。

有人可以建议我一个替代方案吗?

这是代码片段。

$(".dobAutoTab").each(function() { 
    var dobFields = $(this).children().find("input"); 
    var fldDate = $(dobFields[0]); 
    var fldMonth = $(dobFields[1]); 
    var fldYear = $(dobFields[2]); 
)};
4

3 回答 3

8

大多数情况下,这取决于您要实现的目标:

  • .filter()仅搜索与前提条件匹配的元素。
  • .find()在 children、children's children 和 all 后裔下搜索。
  • .children()工作方式完全相同,但只会找到孩子,而不是更远的后代。
  • .closest()从当前元素开始,获取与选择器匹配的更接近的(第一个)元素。
  • .parent()获取当前匹配元素集中每个元素的父元素,可选地由选择器过滤。

当然,您的选择器越具体,您的结果就会越快。

而且,如果可以的话,在上下文中搜索您需要的内容,这样会更快,有关选择器的更多信息,请查看此处

于 2012-07-10T14:37:49.240 回答
3

尝试使用普通的 CSS 选择器,$('#id span')例如基本上是$('#id').find('span')但要快得多。

但无论如何,一些代码示例会给你一个更具体的答案。

于 2012-07-10T14:14:08.863 回答
1

正如 Luis 所说.filter(), .children(), .closest() and parent(),函数可用于替代.find()函数,我想从 jquery 选择器中再添加两个选择器来替代.find()函数,如下所示:

  1. 子选择器(“父>子”)它只选择第一级后代或直接子元素。例如$('#parent_id > #child_id')$(".parent > .first-level-child")
  2. 后代选择器(“祖先后代”)它选择该元素的子、孙、曾孙等。在里面你可以使用$('#parent_id #child_id')or $('#parent_id #grandchild_id')or $(".parent .great-grand-child")or$( "form input" )
于 2018-08-28T11:48:18.863 回答