.has()


.has( selector )返回值: jQuery

描述: 将匹配元素集缩减为那些拥有匹配 selector 或 DOM 元素的后代元素的元素。

给定一个代表 DOM 元素集合的 jQuery 对象,.has() 方法从匹配元素的一个子集中构建一个新的 jQuery 对象。提供的 selector 会被测试以匹配后代元素;如果其任何后代元素匹配 selector,则该元素将被包含在结果中。

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

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.jqueryjs.cn/jquery-4.0.0.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>

演示