.has()

.has( selector )返回类型:jQuery

描述:把匹配的元素集合缩小到具有一个后代匹配选择器或者DOM元素的元素。

给定一个jQuery对象,代表一些DOM元素,.has()方法根据匹配的元素的子集,构造了一个新的jQuery对象。提供的选择器是针对匹配的元素测试后代用的;如果它的任何后代元素匹配选择器,它就会包括在结果中。

请考虑一个网页,带有嵌套的列表,如下所示:

1
2
3
4
5
6
7
8
9
10
11
<ul>
<li>list item 1</li>
<li>list item 2
<ul>
<li>list item 2-a</li>
<li>list item 2-b</li>
</ul>
</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>

我们可以把此方法应用到列表项集合中,如下所示:

1
$( "li" ).has( "ul" ).css( "background-color", "red" );

此调用的结果是项目2带红色背景,因为它是唯一的具有<ul>在它的后代中的<li>

示例:

检查元素是否在另一个里面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>has demo</title>
<style>
.full {
border: 1px solid red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<ul><li>Does the UL contain an LI?</li></ul>
<script>
$( "ul" ).append( "<li>" +
( $( "ul" ).has( "li" ).length ? "Yes" : "No" ) +
"</li>" );
$( "ul" ).has( "li" ).addClass( "full" );
</script>
</body>
</html>

演示: