jQuery has(),not()和filter()函数示例
jQuery API提供了遍历方法来过滤出匹配的元素。
我们将在这篇文章中讨论一些过滤方法,即jQueryhas()
,not()
和filter()
。
jQuery has()
" has()"方法返回与至少一个传递给该方法的元素相匹配的元素。
has()方法接受一个强制性参数,该参数会减少匹配的元素集。
这是使用has()的一般语法:
- selector.has(element)
元素可以是与之匹配的任何选择器表达式,也可以是任何DOM元素。
您可以通过$(" div")。
has(" p,span")之类的方法传递多个逗号分隔的元素。
has()方法返回所有包含任何元素的div元素,即p或者span元素。
jQuery has()示例
以下示例演示了jQuery has()的用法。
<!doctype html> <html> <head> <title>jQuery Traversing has</title> <style> div{ display: block; border: 3px solid grey; color: black; padding: 5px; margin: 25px; width:250px; text-align:center; color:red; } p{ color: green; text-align:center; } </style> <script src="https://code.jquery.com/jquery-2.1.1.js"></script> </head> <body> <h2>jQuery has() Demo</h2> <div>This div has a p element <p>p - I am inside div</p> </div> <div>I'm not yellow because I don't have a p element</div> <script> $(document).ready(function(){ $("div").has("p").css("background-color","yellow"); }); </script> </body> </html>
在此示例中,我们有两个div元素。
我们将使用jQuery has()检查div元素是否具有p元素。
$(" div").has(" p")"检查div是否具有p元素。
has()方法遍历DOM树并找到两个div元素,但只有一个具有p。
因此,包含p的div将用黄色填充。
在此示例中,您可以看到has()方法使用传递给此方法的选择器(即p元素)过滤了div元素。
以下是以上HTML页面产生的输出。
现在,我们可以查看jQuery not(),这是另一种有用的过滤方法。
jQuery not()
not()方法从匹配的元素集中过滤掉所有与指定选择器匹配的元素。
这是使用not()的一般语法:
- selector.not(element)
元素可以是包含选择器表达式,函数,任何DOM元素或者任何现有jQuery对象的字符串。
jQuery not()示例
以下示例演示了jQuery not()的用法
<!doctype html> <html> <head> <title>jQuery traversing not</title> <style> div { width: 50px; height: 50px; margin: 10px; float: left; background: yellow; border: 2px solid white; } .green { background: green; } } </style> <script src="https://code.jquery.com/jquery-2.1.1.js"></script> </head> <body> <div></div> <div class="green"></div> <div></div> <script> $( "div" ).not( ".green" ) .css( "border-color", "red" ); </script> </body> </html>
在这个例子中,我们有三个div元素,其中两个是用CSS样式class =" green"定义的。
$(" div").not(" .green").css(" border-color"," red");"这行代码过滤掉没有class" green"的div元素。
并将边框颜色更改为红色。
现在,我们可以查看jQuery filter(),这是另一种有用的过滤方法。
jQuery filter()
filter()
方法从匹配的元素集中删除所有与指定选择器不匹配的元素。
这是使用filter()的一般语法:
- selector.filter(element)
元素可以是包含选择器表达式,函数,任何DOM元素或者任何现有jQuery对象的字符串。
jQuery filter()示例
以下示例演示了jQuery filter()的用法
<!doctype html> <html> <head> <title>jQuery traversing filter</title> <style> div,.newDivClass{ width: 50px; height: 50px; margin: 10px; float: left; background: yellow; border: 2px solid white; } } </style> <script src="https://code.jquery.com/jquery-2.1.1.js"></script> </head> <body> <div></div> <div class="newDivClass"></div> <div></div> <script> $( "div" ) .css( "background", "yellow" ) .filter( ".newDivClass" ) .css( "border-color", "red" ); </script> </body> </html>
在此示例中,我们有三个div元素,其中一个元素是使用CSS样式 class =" newDivClass"定义的。
首先,我们使用filter()方法将所有div元素的背景色更改为黄色,并更改具有clas ==" newDivClass"的div元素的边框颜色。