jquery最近元素在dom中的某个地方(模糊搜索)

时间:2012-11-26 18:02:55

标签: javascript jquery html dom

是否有内置的jQuery方法可以找到最接近另一个元素的dom元素?我的意思是最接近的 - 最小的相对路径长度(例如XPath)从一个到另一个。

考虑以下示例(来自Twitter Bootstrap的下拉框)。有一个下拉图标 - 带有.JS-ACTIONS的元素和一组链接 - 带有.JS-DELETE的元素,当其中一个链接点击下拉图标上的进度条时,应该启用。

<div class='btn-group'>
  <a href='#' class='btn dropdown-toggle JS-ACTIONS' data-toggle='dropdown'>
    <i class='icon-cog'></i>
    <span class="caret"></span>
  </a>
  <ul class='dropdown-menu pull-right'>
    <li><a href='#' class='JS-DELETE'>Delete</a></li>
  </ul>
</div>

一种方法,使用

之类的东西

$(element.currentTarget).parent().parent().find('.JS-ACTIONS').showProgress()

但我希望JavaScript与DOM结构不同,例如

$(element.currentTarget).nearest('.JS-ACTIONS').showProgress()

jQuery中有这样的方法吗?

更新

jQuery的closest方法不起作用,它只在父母中搜索,不在兄弟姐妹和父母的其他孩子中搜索。

2 个答案:

答案 0 :(得分:2)

您可能需要closest()

  

对于集合中的每个元素,获取与之匹配的第一个元素   选择器通过测试元素本身并遍历其中   DOM树中的祖先。

$(element.currentTarget).closest('.JS-ACTIONS').showProgress()

答案 1 :(得分:1)

你需要使用closest()它会在祖先的层次结构中首次出现匹配元素。

$(element.currentTarget).closest('.JS-ACTIONS')