selectores name examples ejemplos child avanzados jquery jquery-selectors

name - La forma más limpia de conseguir el próximo hermano en jQuery



selectores jquery avanzados (3)

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

Después de bastantes pruebas con next (''a'') y esas, finalmente encontré una que funcionó. Me pregunto por qué next (''a'') no lo hizo, o más cercano o similar. ¿Hay formas más limpias de acceder al enlace del enlace después de hacer clic en la casilla de verificación?

$(''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>


A continuación el código trabajó para mí

$ (''# id ~ iframe'');



Para profundizar en los comentarios anteriores:

No puedes escribir:

  • next("a") , porque next() solo intenta coincidir con el siguiente elemento. Golpeará el elemento blanco y no coincidirá con nada.

  • closest("a") , porque closest() avanza por la cadena de antepasados, comenzando con el elemento en sí, y por lo tanto, se perderán los elementos <a> .

Puedes escribir:

  • next().next() , como sugiere Arend. Probablemente sea la solución más rápida, pero hace que los elementos sean obligatorios.

  • nextAll("a") , pero eso puede devolver múltiples elementos (y lo hará con su ejemplo de marcado). El encadenamiento en first() lo evitaría, pero nextAll() aún tendría que recorrer en iteración todos los siguientes hermanos, lo que puede hacerlo lento dependiendo de la complejidad del marcado dentro de los elementos <div> .

  • nextUntil("a").last().next() , que solo se repite en los siguientes hermanos hasta que encuentra un enlace, luego devuelve el siguiente hermano inmediato del último elemento coincidente. Puede ser más rápido que nextAll() , nuevamente, dependiendo de su marca.