【问题标题】:Find including itself with jQuery (like closest but traversing down)使用 jQuery 查找包含自身(如最接近但向下遍历)
【发布时间】:2013-07-06 07:35:26
【问题描述】:

就像.closest() 允许从元素本身向上遍历其祖先一样,我正在寻找一种从元素本身向下遍历其后代的方法(与.find() 不同,它只遍历后代,不包括元素本身)。 我查看了the list of traversing methods 并找不到我要找的东西。

jQuery中是否有类似.closest()但用于向下遍历的方法?

【问题讨论】:

  • 我不理解你的问题,为什么 find 不行?
  • @Karl-AndréGagnon 因为它不包含元素本身作为最接近()

标签: jquery dom find element traversal


【解决方案1】:

只需使用addBack(selector) 方法:

$(this).find('.myclass').addBack('.myclass').first();

addBack('.myclass') 将添加元素本身如果匹配选择器

【讨论】:

  • 我相信你需要使用.addBack('.myclass') 否则你总是以元素本身结束,而最初的意图是搜索与类匹配的元素(同时在搜索中包括元素本身) .见jsfiddle.net/W3WCQ/11。也许您可以进一步帮助我:我正在尝试基于 find + addBack 创建自己的 findClosest 插件,但由于某种原因它失败了。
  • 我们可能还在某处遗漏了.first(),以确保我们只返回找到的第一个。
  • 所以你只想返回一个最接近的元素或包括元素本身在内的所有后代?
  • 是的,就像.closest,但正在下降。
  • 好吧,我误解了你的问题
【解决方案2】:

这里是一个可以找到最接近的插件(包括它自己):

$.fn.findClosest = function(selector) {
    return this.is(selector) ? this.filter(selector).first() : this.find(selector).first();
};

你这样称呼它:

$('#level-2').findClosest('.foo');

小提琴:http://jsfiddle.net/W3WCQ/12/

【讨论】:

  • 这很好用,虽然我相信jsfiddle 的例子能真正说明findClosest 你需要两种情况(一种元素本身是匹配的,另一种不是):@ 987654322@
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 2021-12-28
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多