Вопрос

<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>

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

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

Дополнительная информация. В этом следующем примере я бы хотел, чтобы это удалить что-то1. Поэтому я не могу сказать родителям («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>
Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top