访问最远的父[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我想知道如何addClassli最远的父母,我试过这个并且工作正常,但我觉得这是一个错误的逻辑,不是吗?

$('li').each(function() {
  $(this).click(function() {
    $(this).parent().parent().parent().parent().parent().parent().addClass('myClass');
  });
});
.myClass {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div> <!-- I want to add class to this parent -->
  <div>
    <div>
      <div>
        <div>
          <ul>
            <li><a>Click</a></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>

我想像closest()那样为children工作,有没有办法进入盛大的parent?在这个例子中,我被迫写了六次parent()

javascript jquery
2个回答
0
投票

使用$(this).parents([optional]).eq(n)

更新:

这里有一些属性,如果我们console.log($(this).parents())console.log($(this).parents('div')).eq(n)的灵活性可能不是每次我们想要最外层的:

$(本)。家长()

{
  "0": <ul>…</ul>,
  "1": <div>…</div>,
  "2": <div>…</div>,
  "3": <div>…</div>,
  "4": <div>…</div>,
  "5": <div class="myClass">…</div>,
  "6": <body>…</body>,
  "7": <html>…</html>,
  "length": 8,
  ...

$(本)。家长( 'DIV')

{
  "0": <div>…</div>,
  "1": <div>…</div>,
  "2": <div>…</div>,
  "3": <div>…</div>,
  "4": <div class="myClass">…</div>,
  "length": 5,
 ...

$('li').each(function() {
  $(this).click(function() {
     $(this).parents().eq(5).addClass('myClass');
     // Or 
     // $(this).parents('div').eq(4).addClass('myClass');
     console.log($(this).parents('div'));
  });
});
.myClass {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div> <!-- I want to add class to this parent -->
  <div>
    <div>
      <div>
        <div>
          <ul>
            <li><a>Click</a></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>

1
投票

在元素的所有.last()中获取.parents()

$('li').each(function() {
  $(this).click(function() {
    $(this).parents('div').last().addClass('myClass');
  });
});
.myClass {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div> <!-- I want to add class to this parent -->
  <div>
    <div>
      <div>
        <div>
          <ul>
            <li><a>Click</a></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.