jQuery.has() 函数详解

has()函数用于筛选出包含特定后代的元素,并以jQuery对象的形式返回。

特定后代是指该元素至少有一个后代元素匹配指定的表达式。

这里的表达式包括:选择器(字符串)、DOM元素(Element)、jQuery对象

该函数属于jQuery对象(实例)。

语法

jQuery 1.4 新增该函数。

JavaScript:

jQueryObject.has( expr )

参数

参数描述
exprString/Element/jQuery类型指定的表达式。

has()函数实际上是根据后代元素来筛选元素,如果当前jQuery对象匹配的每个元素的后代元素中至少有一个元素符合指定的表达式,则该元素符合筛选条件。

如果expr参数为字符串,则将其视作jQuery选择器,用以表示该选择器所匹配的元素。

返回值

has()函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象的匹配元素中符合筛选条件的元素。

如果没有满足条件的元素,则返回空的jQuery对象。

has()函数不是获取后代元素,而是当前jQuery对象中的元素,只是它们的后代元素中至少要有一个元素符合指定的表达式,然后返回包含所有满足条件的元素的jQuery对象。

has()函数并不会更改当前jQuery对象的元素匹配,筛选结果只反映在作为返回值的新的jQuery对象中。

示例&说明

has()函数与:has()选择器具有如下等效代码:
JavaScript:

// 这里的是selector、selector1均表示任意的选择器
$("selector").has("selector1");
// 等价于
$("selector:has(selector1)");

以下面这段HTML代码为例:

HTML:

<div id="n1">
	<div id="n2">
		<ul id="n3" data_id="12">
			<li id="n4">item1</li>
			<li id="n5" class="foo bar">item2</li>
			<li id="n6" class="level-2">item3</li>
		</ul>
	</div>
	<div id="n7">
		<input id="n8" name="username" type="text" value="1">
		<input id="n9" class="foo" name="orders" type="checkbox" checked="checked" value="1">
	</div>
</div>

以下jQuery示例代码用于演示has()函数的具体用法:

JavaScript:

/* $("#n3") 匹配n3一个元素 */

// n3的子元素中存在li元素
document.writeln( $("#n3").has("li").length ); // 1
// n3的子元素中存在类名为foo的元素
document.writeln( $("#n3").has(".foo").length ); // 1

/* $("div") 匹配n1、n2、n7这3个元素 */

// 不存在id为n10的元素,因此3个元素的子元素中都不存在n10
document.writeln( $("div").has( "#n10" ).length ); // 0
// n1、n2、n7的子元素中都存在类名为foo的元素
document.writeln( $("div").has( $(".foo") ).length ); // 3

var n8 = document.getElementById("n8");
// n1、n7的子元素中都存在id为n8的元素
document.writeln( $("div").has( n8 ).length ); // 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值