如何优化$ .find().first()?

daG*_*vis 5 javascript optimization jquery find findfirst

我需要检索第一个元素.

我用这段代码做到了......

$(element).find('.x').first();
Run Code Online (Sandbox Code Playgroud)

据我所知,那段代码......

  1. element匹配的元素中检索所有元素.x,
  2. 删除不需要的元素;

有没有更好的方法呢?喜欢$.findOne()什么?

Mrc*_*ief 11

根据jQuery文档:

因为:首先是jQuery扩展而不是CSS规范的一部分,查询使用:首先不能利用本机DOM querySelectorAll()方法提供的性能提升.要在使用时获得最佳性能:首先选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(":first").

所以重写你的选择器:

$(element).find('.x').filter(":first")
Run Code Online (Sandbox Code Playgroud)

或者(这个只给你直接后代,并且会比.find你更快,除非你也在寻找嵌套元素)

$(element).children('.x').filter(":first")
Run Code Online (Sandbox Code Playgroud)

应该给你更好的结果.


更新在来自kingjivpatrick dw(见评论)的宝贵意见之后,看起来这两者似乎比.filter(':first')文件声称的更快.

$(element).find('.x').first();   // faster

$($(element).find('.x')[0]);     // fastest
Run Code Online (Sandbox Code Playgroud)

  • 在回答之前检查jQuery文档的+1 (2认同)