jq - 遍历closest()方法

本文介绍如何使用jQuery的closest()方法实现点击特定元素显示隐藏其他元素的功能。通过事件委托的方式,使得点击目标元素之外的任何地方都能触发隐藏效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

closest() 方法实现点击元素本身以外隐藏元素

通过jQuery 遍历 - closest() 方法实现点击ele2以外的元素隐藏ele2
需求:
点击ele1显示ele2后,再次点击ele1隐藏ele2(或者点击ele2以外的元素隐藏ele2)

    //点击ele1显示隐藏ele2后,再次点击ele1隐藏ele2
    $("ele1").click(function(){
		if($("ele2").css('display') == 'none'){
			$("ele2").show();
		}else {
			$("ele2").hide(); 
		}
	});
	//点击ele2以外的元素隐藏ele2
	$(function(){ 
		$(document).bind("click",function(e){ 
			var target = $(e.target); 
			if(target.closest("ele2").length == 0){ 
				$("ele2").hide(); 
			} 
		});
	}); 

通过 closest() 完成事件委托。当被最接近的列表元素或其子后代元素被点击时,隐藏ele2。
bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。

closest()的方法作用是:从元素本身开始,逐级向上级元素匹配,并返回最先匹配的祖先元素。
使用例子为:

$( document ).bind("click", function( e ) {
    $( e.target ).closest("li").toggleClass("hilight");
    //当被最接近的列表元素或其子后代元素被点击时,会切换黄色背景
});

此处使用e.target 而不使用this的原因是:this会冒泡,e.target不冒泡(就是指向事件触发的dom)。
this冒泡,指的是会将目标函数点击的事件不自身处理,将事件委托到他的父元素节点上。
e.target指的是目标函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值