.find()
函数在IE 7及更低版本中运行速度非常慢,经常导致挂起。
有人可以建议我另类吗?
以下是代码段。
$(".dobAutoTab").each(function() {
var dobFields = $(this).children().find("input");
var fldDate = $(dobFields[0]);
var fldMonth = $(dobFields[1]);
var fldYear = $(dobFields[2]);
)};
答案 0 :(得分:6)
主要取决于你想要达到的目标:
.filter()
仅搜索与前提条件匹配的元素。 .find()
搜索儿童,儿童和所有后代。 .children()
的工作方式完全一样,但只会找到孩子,而不是更远的后代。.closest()
从当前元素开始,获取与选择器匹配的更近(第一个)元素。.parent()
获取当前匹配元素集中每个元素的父元素,可选择通过选择器进行过滤。当然,选择器越具体,结果就越快。
而且,如果可以,在上下文中搜索您需要的内容,那么这种方式会更快,有关选择器的更多信息,check here
答案 1 :(得分:3)
尝试使用普通的CSS选择器,$('#id span')
例如基本上是$('#id').find('span')
但速度要快得多。
但无论如何,一些代码示例会为您提供更具体的答案。
答案 2 :(得分:1)
正如Luis所说,.filter(), .children(), .closest() and parent()
函数可替代.find()
函数,我想从jquery选择器中向.find()
函数的替代方法中添加另外两个选择器,如下所示: / p>
$('#parent_id > #child_id')
或$(".parent > .first-level-child")
$('#parent_id #child_id')
或$('#parent_id #grandchild_id')
或$(".parent .great-grand-child")
或$( "form input" )