first
middle
<"/>
first
middle
<">
filter()
方法用于过滤包装器集中包含的当前元素集。它的使用应该留给需要过滤一组已选择的元素的任务。例如,下面的代码将过滤包装集中包含的三个 <p></p>
方法用于过滤包装器集中包含的当前元素集。它的使用应该留给需要过滤一组已选择的元素的任务。例如,下面的代码将过滤包装集中包含的三个
<!DOCTYPE html> <html lang="en"> <body> <p><strong>first</strong></p> <p>middle</p> <p><strong>last</strong></p> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { // Alerts middle, by filtering out the first // and last <p> elements in the wrapper set. alert($('p').filter(':not(:first):not(:last)').text()); })(jQuery); </script> </body> </html><strong></strong>注意:
filter()
时,总是问自己是否绝对有必要。例如, $('p').filter(':not(:first):not(:last)')
可以不写 filter()
当使用 $('p:not(:first) :not(:last)')。
find()
方法可用于进一步查找当前所选元素的后代。认为 find()
更像是使用封装在已选择的元素中的新元素来更新或更改当前的包装集。例如,下面的代码将使用 find()
将包装集从 <p></p>
元素更改为两个 <strong></strong>
另一方面,find()
方法可用于进一步查找当前所选元素的后代。认为 find()
更像是使用封装在已选择的元素中的新元素来更新或更改当前的包装集。例如,下面的代码将使用 find()
将包装集从
<p></p>
元素。
<!DOCTYPE html> <html lang="en"> <body> <p><strong>first</strong></p> <p>middle</p> <p><strong>last</strong></p> <script src="https://img.php.cn/"></script> <script> (function ($) { // Alerts "strong" alert($('p').find('strong').get(0).nodeName); })(jQuery); </script> </body> </html>
andSelf()
将使用 find()
方法之前的包装器中的元素与当前元素组合起来 - 例如$('p').find('strong').andSelf()
注意:实际上,您可以使用 .filter()
只会减少(或过滤)包装器集中当前选定的元素,而 find()
要带走的概念是
实际上可以创建一组全新的包装元素。
find()
和 filter()
都是破坏性方法,可以使用 end()
撤消,这会将包装的集合恢复为使用 find()
或 filter()
注意:
向 filter() 传递函数而不是表达式filter()
方法传递一个函数可能更有意义,该函数允许您检查包装器集中的每个元素的特定值场景。<img alt="使用jQuery进行遍历" >
元素包装在当前未使用该元素包装的 <p></p>
<img alt="使用jQuery进行遍历" >
元素包装在当前未使用该元素包装的 <p></p>
元素中。filter()
方法,向其传递一个函数,该函数将确定该元素的父元素是否为 <p></p>
元素,如果否,则在使用 <p></p>
元素包装集合中剩余的 <img alt="使用jQuery进行遍历" >
您可以创建一个自定义过滤器来完成此任务,或者您可以使用 方法,向其传递一个函数,该函数将确定该元素的父元素是否为
元素,如果否,则在使用 <img alt="使用jQuery进行遍历" >
元素,然后向 filter()
方法传递一个用于迭代每个元素的函数(使用 this
) 在包装器集中,检查 <img alt="使用jQuery进行遍历" >
元素的父元素是否为 <p></p>
<img alt="使用jQuery进行遍历" >
元素之前,从集合中删除该元素。
!
运算符将布尔值 true 更改为 false。这是因为我想从以 <p></p>
元素作为父元素的集合中删除 <img alt="使用jQuery进行遍历" >
元素。如果函数返回 false,则传递给 filter()
在下面的示例中,我选择 HTML 页面中的每个 <img alt="使用jQuery进行遍历" >
元素,然后向
this
) 在包装器集中,检查 <img alt="使用jQuery进行遍历" >
元素的父元素是否为 <p></p>
元素。:findImgWithNoP
- 对于单一情况可以通过简单地向filter方法传递一个可以进行自定义过滤的函数来避免。这个概念非常强大。考虑一下当我们将正则表达式测试与 filter()
<!DOCTYPE html> <html lang="en"> <body> <img> <img> <p> <img> </p> <img> <p> <img> </p> <script src="https://img.php.cn/"></script> <script> (function ($) { $('img').attr('src', 'http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif').filter(function () { return !$(this).parent('p').length == 1 }).wrap('<p></p>'); })(jQuery); </script> </body> </html>请注意,我正在使用
!
运算符将布尔值 true 更改为 false。这是因为我想从以 <hr>
元素作为父元素的集合中删除 <img alt="使用jQuery进行遍历" >
元素。如果函数返回 false,则传递给 要点是,如果您正在处理孤立的情况,请创建自定义过滤器 - 例如:findImgWithNoP
- 对于单一情况可以通过简单地向filter方法传递一个可以进行自定义过滤的函数来避免。这个概念非常强大。考虑一下当我们将正则表达式测试与 parent()
、parents()
和 closest()
方法结合使用时可能发生什么。
<!DOCTYPE html> <html lang="en"> <body> <ul> <li>jQuery is great.</li> <li>It's lightweight.</li> <li>Its free!</li> <li>jQuery makes everything simple.</li> </ul> <script src="https://img.php.cn/"></script> <script> (function($){ // Wrap a <strong> element around any text within // a <li> that contains the pattern "jQuery" var pattern = /jQuery/i; $('ul li').filter(function () { return pattern.test($(this).text()); }).wrap('<strong></strong>'); })(jQuery); </script> </body> </html>
向上遍历 DOM
closest()
和 parents()
可能看起来具有相同的功能,但 closest()
您可以使用
<!DOCTYPE html> <html lang="en"> <body> <div id="parent2"> <div id="parent1"> <div id="parent0"> <div id="start"></div> </div> </div> </div> <script src="https://img.php.cn/"></script> <script> (function ($) { // Alerts "parent0" x4 alert($('#start').parent().attr('id')); alert($('#start').parents('#parent0').attr('id')); alert($('#start').parents()[0].id); // Gets actual DOM element alert($('#start').closest('#parent0').attr('id')); // Alerts "parent1" x4 alert($('#start').parent().parent().attr('id')); alert($('#start').parents('#parent1').attr('id')); alert($('#start').parents()[1].id); // Gets actual DOM element alert($('#start').closest('#parent1').attr('id')); // Alerts "parent2" x4 alert($('#start').parent().parent().parent().attr('id')); alert($('#start').parents('#parent2').attr('id')); alert($('#start').parents()[2].id); // Gets actual DOM element alert($('#start').closest('#parent2').attr('id')); })(jQuery); </script> </body> </html>
注意:
实际上会在其过滤中包含当前选定的元素.closest()
一旦找到匹配项就会停止遍历,而 parents()
会获取所有父级,然后过滤您的可选选择器。因此,closest()
next()
最多只能返回一个元素。
children('表达式')
next('表达式')
nextAll('表达式')
parent('表达式')
父母('表达')
prev('表达式')
prevAll('表达式')
siblings('表达式')
closest('表达式')
以上是使用jQuery进行遍历的详细内容。更多信息请关注PHP中文网其他相关文章!