.closest(selectors [,context])bug

时间:2012-09-20 19:32:38

标签: javascript jquery html closest

我在jQuery中遇到.closets()的问题

在jQuery文档中告诉我可以使用它。

<!DOCTYPE html>
<html>
<head>
  <style></style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <ul><li></li><li></li></ul>
<script>
  var close = $("li:first").closest(["ul","body"]);
  alert(close.length);
  </script>
</body>
</html>

http://api.jquery.com/closest/#closest2

在这部分中,我获得了关于ul和body的信息,这是li的两个步骤

var close = $("li:first").closest(["ul","body"]);

但它不起作用,在关闭内部没有任何东西,它是空的,我做错了什么? 来自jQuery文档的代码也是错误的。该示例不起作用。

2 个答案:

答案 0 :(得分:3)

重新阅读文档:

  

此签名(仅限!)自jQuery 1.7起已弃用。这个方法是   主要用于内部或插件作者。

<强> Example pre-jQuery 1.7

<强> Example post-jQuery 1.7

答案 1 :(得分:1)

如果您尝试选择最接近的ul和最接近的正文,则应使用.parents():first,因为您当前尝试使用的方法已在最新版本的jQuery中删除。

http://jsfiddle.net/MYjRm/

var close = $("li:first").parents("ul:first,body:first");
  $.each(close, function(i){
  $("li").eq(i).html( this.nodeName );
});​
根据定义,

.closest()只能选择1个元素,因为您要查找两个元素,您应该使用可以选择1个以上的.parents()

如果您只想选择1个元素,请使用.closest()和选择该元素的选择器。 $("li:first").closest("ul");