¿Hay alguna manera en jQuery para verificar si algún padre, abuelo, bisabuelo tiene una clase?
Tengo una estructura de marcado que me ha dejado hacer este tipo de cosas en el código:
$(elem).parent().parent().parent().parent().hasClass('left')
Sin embargo, para facilitar la lectura del código, me gustaría evitar este tipo de cosas. ¿Hay alguna manera de decir "cualquier padre / abuelo / bisabuelo tiene esta clase"?
Estoy usando jQuery 1.7.2.
javascript
jquery
html
jquery-selectors
jquery-1.7
crmpicco
fuente
fuente
Respuestas:
fuente
.length
como un valor de verdad es bastante prolífica en JS, es mucho más clara y fácil de entender.length > 0
Hay muchas formas de filtrar por ancestros de elementos.
Cuidado , el
closest()
método incluye el elemento en sí mismo mientras se busca el selector.Alternativamente, si tiene un selector único que coincida con
$elem
, por ejemplo#myElem
, puede usar:Si desea hacer coincidir un elemento dependiendo de cualquiera de sus clases ancestrales solo con fines de estilo, solo use una regla CSS :
fuente
Is there any way in jQuery to check if any parent,...
,closest()
de verificación para el elemento en sí por lo que este no es realmente responder a la pregunta, OP podría desear excluir explecitely el elemento en sí, por lo que ya, la respuesta fue usar.parents()
Puede usar el
parents
método con el.class
selector especificado y verificar si alguno de ellos coincide:fuente