JQuery NextALL Обход - PullRequest
       11

JQuery NextALL Обход

0 голосов
/ 02 декабря 2010
<div><a href="" class="deleteNextSomething">Delete Something!</a></div>
<div class="something">This is Something</div>

Очевидно, я мог бы просто сделать это:

$('.deleteNextSomething').click(function() {
 $(this).parent('div').next('.something').remove();
});

Но что, если мой HTML на самом деле больше похож на этот:

<div><div><div><a href="" class="deleteNextSomething">Delete Something!</a></div></div></div>
<div class="something">This is Something</div>

Дело в том, что я не хочу знать, сколько родителей мне нужно, чтобы подняться до того, как я начну ходить по всему. Я просто хочу пройти DOM в «следующем» направлении, пока не достигну следующего нужного мне узла.

Кто-нибудь знает, как это решить? pleasssse.

Дополнительная информация. В следующем примере я бы хотел, чтобы он удалил Something1. Поэтому я не могу сказать «родители» («div»). Далее - потому что это будет игнорировать следующий элемент.

<div>
    <a href="" class="deleteNextSomething">Delete Something!</a>
    <div class="something">This is Something 1</div>
</div>
<div class="something">This is Something 2</div>

1 Ответ

2 голосов
/ 02 декабря 2010

Если вы хотите посмотреть на «ближайший» следующий, это будет что-то вроде этого, используя .parents(), чтобы перейти к всем родителям, а не только на первый уровень:

$('.deleteNextSomething').click(function() {
  $(this).parents('div').next('.something:first').remove();
});

Вы можете проверить это здесь .Поскольку после вызова .next() они находятся в обратном порядке, вам нужен найденный им :first, который будет наиболее локальным по отношению к this, с которого вы начали,

...