我什么时候会使用 jQuery 的.find()
?
例如,
$('tr').find('.someClass');
相当于$('tr .someClass')
那么,什么时候会是一个很好的例子来说明何时使用.find()
直接选择器?
另外,哪个性能更高?选择器比 快.find()
吗?
我什么时候会使用 jQuery 的.find()
?
例如,
$('tr').find('.someClass');
相当于$('tr .someClass')
那么,什么时候会是一个很好的例子来说明何时使用.find()
直接选择器?
另外,哪个性能更高?选择器比 快.find()
吗?
答案是尽可能。
它总是比拥有子/多项目/CSS/上下文选择器性能更高,并且是性能最快的遍历机制。
您甚至可以考虑不使用它的唯一情况是,如果您只想选择直接子项,并且这些子项恰好与您不想选择的子项具有相同的类。这是一份工作.children()
,但非常罕见。
这取决于你选择什么。
随着选择的元素数量的$('tr')
增加,.find
将变得更加昂贵。
一般来说,最好做任何会导致接触最少元素的事情。当您只处理 2 个元素(父元素和子元素)时,.find 显然会更快,因为它只是一个父元素获取它的子元素并过滤到选择器。但是当有 200 个父母时,它必须遍历所有 200 个并在每个中搜索孩子。通过使用选择器开始,你永远不会触及所有的父母,你只是直接进入子元素。即使那样,一个与另一个的性能也会因浏览器而异。
花更少的时间担心这些微优化,直到它成为您要解决的真正问题,然后解决那个问题,而不是试图找出要遵循的一般规则。
.find()
只是用于搜索代表 DOM 元素的 jQuery 对象的后代。
一个示例用例是将表示表单元素的 jQuery 对象传递给表单解析函数,然后.find()
用于从表单的子输入中获取不同的值。
每次你想要抓取一个元素时,不要将表单转换为一个 jQuery 对象,而是将 jQuery 表单对象分配给一个变量,然后使用它.find()
来抓取输入。
在代码中,这是:
var $form = $('#myFormId'),
firstName = $form.find('input[name="firstName"]').val(),
lastName = $form.find('input[name="lastName"]').val();
比这个便宜:
var firstName = $('#myFormId input[name="firstName"]').val(),
lastName = $('#myFormId input[name="lastName"]').val();
使用它也更便宜.children()
,请参阅此参考,除非您正在搜索的项目是您正在操作的 jQuery 对象的直接子项。
希望这是有道理的:)
上面的答案很好,但只想添加 .find() 是基于后代的搜索。所以它会找到被选中的 Dom 元素的所有子元素。