jQuery closest()方法用于返回选择的元素的第一个祖先元素。它是 jQuery 中的内置方法。

为了搜索第一个祖先,closest() 方法从当前元素向上遍历,如果不匹配,则将逐个父项进行搜索,直到找到与指定表达式匹配的元素。此方法返回所选元素的第一个祖先。

它和parents() 方法类似,两者都向上移动搜索 DOM 树。 

  • parents() 方法从父元素开始,并返回与指定表达式匹配的所有祖先。
  • closest() 方法从当前元素开始,并返回与指定表达式匹配的第一个祖先。

语法

$(selector).closest(selector, context); 

参数

  • selector:它是必须参数。它是指定选择器表达式、元素或jQuery对象的此值过滤元素并缩小祖先搜索范围。
  • context: 它是可选的。它是一个DOM元素,可以在其中找到匹配的元素。

例子

例1

找p元素第一个祖先div元素的例子

<!DOCTYPE html>
<html>
<head>
<style>
.main * { 
  display: block;
  font-size: 20px;
  position: relative;
  border: 2px solid black;
  color: black; 
  padding: 10px;
  margin: 17px;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
function fun(){
$(document).ready(function(){
  $("p").closest("div").css({ "font-size": "30px", "color": "blue", "border": "6px dashed blue"});
});
}
</script>
</head>

<body class = "main" style="width:500px;height:400px;"> body
  <div> div1
  <div> div2
    <ul> ul 
      <h2>  h2
          <p> p 元素 </p>
      </h2>
    </ul>   
	</div>
  </div>
<button onclick = "fun()"> 点击看看 </button>
  </body>
</html>
jQuery closest() 方法

例2

使用上下文context的例子,表示在这个范围内搜索,本例中,上下文元素为:document.getElementById("dom");

<!DOCTYPE html>
<html>
<head>
<style>
.main * { 
  display: block;
  font-size: 20px;
  position: relative;
  border: 2px solid black;
  color: black; 
  padding: 10px;
  margin: 17px;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
function fun(){
	$(document).ready(function(){
	   var context = document.getElementById("dom");
	   $("p").closest("div", context).css({ "font-size": "30px", "color": "blue", "border": "6px dashed blue"});
	});
}
</script>
</head>

<body class = "main"style="width:500px;"> body
  <div  id = "dom"> div1
  <div> div2
    <ul> ul 
      <h2>  h2
          <p> p 元素 </p>
		  </h2>
      </ul>   
	</div>
  </div>
<button onclick = "fun()">点击看看</button>
  </body>
</html>

jQuery closest() 方法