clase buscar all javascript jquery html jquery-selectors jquery-1.7

javascript - buscar - Comprueba si algún ancestro tiene una clase usando jQuery



jquery replace html (3)

Hay muchas maneras de filtrar para antepasados ​​de elementos.

if ($elem.closest(''.parentClass'').length /* > 0*/) {/*...*/} if ($elem.parents(''.parentClass'').length /* > 0*/) {/*...*/} if ($elem.parents().hasClass(''parentClass'')) {/*...*/} if ($(''.parentClass'').has($elem).length /* > 0*/) {/*...*/} if ($elem.is(''.parentClass *'')) {/*...*/}

Cuidado , el método closest() incluye el elemento en sí mismo mientras busca el selector.

Alternativamente, si tiene un selector único que coincida con $elem , por ejemplo, #myElem , puede usar:

if ($(''.parentClass:has(#myElem)'').length /* > 0*/) {/*...*/} if(document.querySelector(''.parentClass #myElem'')) {/*...*/}

Si desea hacer coincidir un elemento que dependa de cualquiera de sus clases antecesoras solo con fines de estilo, solo use una regla CSS :

.parentClass #myElem { /* CSS property set */ }

¿Hay alguna manera en jQuery de verificar si algún padre, abuelo, bisnieto tiene una clase?

Tengo una estructura de marcado que me ha dejado haciendo este tipo de cosas en el código:

$(elem).parent().parent().parent().parent().hasClass(''left'')

Sin embargo, para la legibilidad del código me gustaría evitar este tipo de cosas. ¿Hay alguna manera de decir "cualquier padre / abuelo / biznieto tiene esta clase"?

Estoy usando jQuery 1.7.2.


Puede usar el método de los parents con el selector .class especificado y verificar si alguno de ellos coincide con él:

if ($elem.parents(''.left'').length != 0) { //someone has this class }


if ($elem.parents(''.left'').length) { }