Le moyen le plus propre pour obtenir le prochain frère à jQuery

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

après quelques tests avec next ('a') et ainsi de suite, j'en ai finalement trouvé un qui a fonctionné. Je me demande juste pourquoi suivante('a') n'a pas, ou plus proche ou similaire. Sont là nettoyeur de façons d'obtenir le href du lien après la case je clique?

$('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="http://www.google.com">click here</a><br>   
    <input type="checkbox" name="checkThis" value="http://www.bing.com" />Check here<br/>
    <a href="http://www.bing.com">click here</a>       
  </div>
</form>
25
demandé sur mplungjan 2011-06-04 19:38:23
la source

3 ответов

Pour des précisions sur les commentaires ci-dessus:

Vous ne peut pas écrire:

  • next("a"), parce que next () essaie seulement de correspondre à l'élément suivant. Il frappe le <br> élément et correspondent à rien.

  • la plus proche() remonte la chaîne de l'ancêtre, en commençant par l'élément lui-même, et va donc manquer le <a> élément.

Vous écrire:

  • next().next(), comme le suggère Arend. C'est probablement la solution la plus rapide, mais il fait le <br> éléments obligatoires.

  • nextAll("a"), mais qui peut renvoyer plusieurs éléments (et le fera avec votre échantillon de markup). Chaînage en first () l'en empêcherait, mais nextAll () il faudrait encore itérer sur tout le prochain fratries, qui peuvent le rendre lent en fonction de la complexité du markup à l'intérieur de votre <div> éléments.

  • nextUntil("a").last().next(), qui n'est itératif que par rapport à la fratrie suivante jusqu'à ce qu'elle trouve un lien, puis renvoie la fratrie suivante immédiate du dernier élément apparié. être plus rapide que nextAll(), encore une fois, en fonction de votre marge.

38
répondu Frédéric Hamidi 2013-09-07 14:12:03
la source

Ou, vous pouvez simplement utiliser le jQuery intégré dans la fonction .siblings()

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

0
répondu Peter Graham 2017-10-04 16:36:55
la source

le code ci-dessous a fonctionné pour moi

$('#id ~ iframe');

0
répondu Ricky 2017-10-06 07:12:06
la source

Autres questions sur