【发布时间】:2009-05-09 15:44:35
【问题描述】:
我查看了JQuery documentation,阅读了常见问题解答并看到了很多示例。看起来像获取文档中由规则描述的所有元素的集合,您编写代码
$(rule)
其中 rule 是一个字符串,其语法描述为 here。 Document 似乎是一个隐藏的输入参数。我可以对 DOM 的子树做同样的事情吗?如果我有一个 DOM 元素,我可以编写类似的代码
element.$(rule)
?
【问题讨论】:
我查看了JQuery documentation,阅读了常见问题解答并看到了很多示例。看起来像获取文档中由规则描述的所有元素的集合,您编写代码
$(rule)
其中 rule 是一个字符串,其语法描述为 here。 Document 似乎是一个隐藏的输入参数。我可以对 DOM 的子树做同样的事情吗?如果我有一个 DOM 元素,我可以编写类似的代码
element.$(rule)
?
【问题讨论】:
$(rule, element)
来自文档:
jQuery(表达式,上下文)
jQuery 的核心功能 以这个功能为中心。 jQuery 中的一切都是基于 这个,或以某种方式使用它。这 此功能的最基本用途是 传入一个表达式(通常 由 CSS 组成),然后找到 所有匹配的元素。
默认情况下,如果没有上下文 指定,$() 查找 DOM 元素 在当前 HTML 的上下文中 文档。如果您确实指定了上下文, 例如 DOM 元素或 jQuery 对象,表达式将被匹配 反对该上下文的内容。
查看允许的 CSS 选择器 表达式的语法。
【讨论】:
有几种方法可以做到这一点。如果您有这样的文件:
<html>
<body>
<p>Test</p>
<div id="box">
<p>Hi There</p>
<div id="subbox">
<p>Bye</p>
</div>
</div>
<p>Boo</p>
</body>
</html>
而您只想要框中的段落,您可以specify a context 进行搜索:
$('p','#box'); // only find paragraphs inside of #box
$('#box').find('p'); // will return both the paragraphs inside of #box
$('#box').children('p'); // will only return the immediate children
我通常喜欢尽可能多地分隔搜索词,而不是使用很长的选择器,因为 a) 我认为这样想更有意义,b) 它有助于 jQuery 进行解析,所以它稍微快一些.所以每当我只想搜索文档的一部分时,我有时会结合使用上下文和附加功能:
$(myelement, mygreatercontext).find(myrefinedsearch);
【讨论】:
$(element).find(rule)
【讨论】: