jQuery has(),not()和filter()函数示例

时间:2020-02-23 14:46:09  来源:igfitidea点击:

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元素的边框颜色。