Подтвердить что ты не робот

Самый чистый способ получить следующего брата в jQuery

http://jsfiddle.net/mplungjan/H9Raz/

После нескольких тестов со следующим ( "a" ) и таким, я наконец нашел тот, который работал. Я просто удивляюсь, почему следующий ( "a" ) не был, или ближайший или похожий. Есть ли более чистые способы доступа к ссылке href после того, как я установил флажок?

$('form input:checkbox').click(function () {
 alert($(this).nextAll('a').attr("href"));
}); 
<form>
  <div>
    <input type="checkbox" name="checkThis" value="http://www.google.com" />Check here<br/>
    <a href="#" onclick="location.href='http://www.google.com'; return false;">click here</a><br>   
    <input type="checkbox" name="checkThis" value="http://www.bing.com" />Check here<br/>
    <a href="#" onclick="location.href='http://www.bing.com'; return false;">click here</a>       
  </div>
</form>
4b9b3361

Ответ 1

Чтобы подробнее остановиться на комментариях выше:

Вы не можете написать:

  • next("a"), потому что next() пытается только подобрать самый следующий элемент. Он попадет в элемент <br> и ничего не будет соответствовать.

  • closest("a"), потому что ближайший() подбирает цепочку предков, начиная с самого элемента, и поэтому пропустит <a>.

Вы можете написать:

  • next().next(), как предлагает Аренд. Это, вероятно, самое быстрое решение, но оно делает элементы <br> обязательными.

  • nextAll("a"), но может возвращать несколько элементов (и будет делать это с помощью образца разметки). Первым() будет препятствовать цепочке но nextAll() все равно придется перебирать все последующие братья и сестры, что может замедлить работу в зависимости от сложности разметки внутри ваших элементов <div>.

  • nextUntil("a").last().next(), который только итерации над соседними братьями и сестрами до тех пор, пока не найдет ссылку, затем вернет ближайший следующий брат последнего сопоставленного элемента. Это может быть быстрее, чем nextAll(), опять же, в зависимости от вашей разметки.

Ответ 2

Или вы можете просто использовать встроенную функцию jQuery .siblings()

https://api.jquery.com/siblings/

Ответ 3

Ниже код работал у меня

$('# id ~ iframe');