繁体   English   中英

如何与某一类的父母一起选择当前元素?

[英]How to select the current element together with parents of a certain class?

我有这样的事情:

body-viewport
   div-page.active
    div-panel
     div-page
     div-page
     div-page
     div-page.active //start here

题:
如果我从底部元素开始,是否有一种简单的查询方法可以选择所有活动页面?

这可行,但......

$('.div-page-active').closest('.body-viewport').find('.div-page-active').doSomething

感谢帮助!

$('.div-page-active').closest('.body-viewport').andSelf()

而自我:

将堆栈上的前一组元素添加到当前集合。

所以从底部元素开始,我假设你已经在事件处理程序中收到了,所以我将调用this (原始元素):

如果您希望所有其他.div-page.active 任何位置最接近的下元素.body-viewport ,我觉得你的表情是相当多的最佳方式:

$(this).closest(".body-viewport").find(".div-page.active");

如果你只需要.div-page.active这是祖先元素this (没有兄弟姐妹或表兄弟等),那么你就必须写一个循环,jQuery的没有一个“我找匹配选择X所有祖先并停止选择器Y“的匹配。 例如,像( 实例 ):

$("#target").click(function() {
  var done = false;
  $(this).parents().filter(function() {
    var $this;

    if (done) {
      return false;
    }

    $this = $(this);
    if ($this.hasClass("body-viewport")) {
      done = true;
      return true;
    }
    else {
      return $this.hasClass("div-page") && $this.hasClass("active");
    }
  }).add(this).css("color", "green");
  display("Matches turned green.");
  return false;
});

在该示例中,当您单击最底部的.div-page.active ,它会转换为.div-page.active ,并且.body-viewport绿色。 像这样(下面以粗体显示的匹配,不能在SO上做颜色),请注意我添加了一个不相关的.div-page.active和一个堂兄,以显示它们是如何被包括在内的:

body-viewport
 div-page active -- ancestor, should be included
  div-panel
   div-page
   div-page
   div-page
   div-page active -- click me
  div-page active -- cousin, should NOT be included
body-viewport
 div-page active -- unrelated, should NOT be included

尝试

$(this).siblings(".div-page-active").doSomething();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM