如何限制jquery搜索范围

Buz*_*uzz 21 javascript jquery

当使用选择器时JQuery,在当前搜索document时看起来像.

如何仅在div元素内搜索元素?

mea*_*gar 28

jQuery选择器非常类似于CSS选择器,您可能更熟悉它们.

首先,选择div,然后从中下降:

$('#my-div').find('some-selector').
Run Code Online (Sandbox Code Playgroud)

或构建您的选择器以匹配相关元素的子元素:

$('#my-div some-selector')
Run Code Online (Sandbox Code Playgroud)

  • (第一个更快) (8认同)
  • @gdoron:有一篇关于它的文章.jQuery经过优化,可以最简单地查找仅限ID的选择器,直接使用`getDocumentById`.其他任何东西都传递给了Sizzle.除非浏览器具有`querySelector` - 并且在某些情况下IIRC显示Sizzle甚至优于`querySelector`.实际上,我现在做了一个快速的谷歌,并且有很多关于它的文章; [这是其中之一](http://engineeredweb.com/blog/10/12/3-tips-make-your-jquery-selectors-faster/). (2认同)

Gon*_*ing 11

老问题,但是每个人似乎都错过了scoped jQuery选择器(使用你想要的范围,即你的div选择器,作为第二个参数)

例如使用

var $matches = $('.adiv', '#mydiv');
Run Code Online (Sandbox Code Playgroud)

这是一个较短的等价物:

var $matches = $('#mydiv').find('.adiv');
Run Code Online (Sandbox Code Playgroud)


epa*_*llo 8

var elems = jQuery(".foo", jQuery("#divYourWantToLimitTo") );  //BAD
//or
var elems = jQuery("#divYourWantToLimitTo .foo");  //Better
//or
var elems = jQuery("#divYourWantToLimitTo").find(".foo");  //BEST
Run Code Online (Sandbox Code Playgroud)

  • 第一种和第三种方法是相同的.[jquery docs](https://api.jquery.com/jquery/#jQuery-selector-context)说:*在内部,选择器上下文是用.find()方法实现的,所以$("span",这个)相当于$(this).find("span").* (2认同)