Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
¿Cómo retrocedes a través de una cadena usando Jquery?

Pensé que había algo en jquery que te permitía retroceder a través de una cadena.

Quiero hacer esto:

 var a = $(this).parent().addClass('test').goBackToParent().children('selectorHere').text()

Quiero obtener el padre del objeto que tengo y agregarle un nombre de clase. Una vez que haga eso, quiero revisar sus elementos secundarios y encontrar un elemento secundario que coincida con mi selector y obtener su texto.

¿Puedo hacer esto, o tengo que hacer esto en su lugar:

 $(this).parent().addClass('test'); var a = $(this).parent().children('selectorHere').text()

Editar

Estoy usando "fin" ahora pero no funciona. Hice un ejemplo que puedes probar aquí .

 <table> <th> <tr>one</tr> <tr>two</tr> </th> <tr> <td id="test"><a href="#"><img src="http://ais.web.cern.ch/ais/apps/hrt/SMT%20v2/Images/btnbar_edit.png" /></a></td> <td class="selectMe">1</td> </tr> </table> $(function() { $('#test').click(function() { // does not work var a = $(this).parent().addClass('afb') .end().children('.selectMe').text(); // works var b = $(this).parent().children('.selectMe').text(); alert(a + ' -should have value'); alert(b + ' -works'); return false; }); });
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Estás buscando el método end() :

 var a = $(this).parent().addClass('test').end() .children('selectorHere').text();

El método:

Finaliza la operación de filtrado más reciente en la cadena actual y devuelve el conjunto de elementos coincidentes a su estado anterior.

Actualización : según su fragmento de html, ¡en realidad no necesita end en absoluto! Lo importante de jQuery es que la mayoría de los métodos no transversales devuelven una copia de sí mismos, por lo que si llama a $(this).addClass('test'), obtiene una copia de $(this) de vuelta.

Así que para tu fragmento:

 // does not work var a = $(this) // points at #test .parent() // now refers to the tr which holds test .addClass('afb') // still refers to the tr .end() // now we're back to #test .children('.selectMe') // empty! there are no direct children of #test which match .selectMe .text(); // empty

En su lugar, inténtelo sin el final:

 // works var a = $(this) // points at #test .parent() // now refers to the tr which holds test .addClass('afb') // still refers to the tr .children('.selectMe') // found the .selectMe td .text(); // returns '1'
over 4 years ago · Santiago Trujillo Denunciar

0

Está buscando el método end() . Simplemente utilícelo en lugar de goBackToParent() .

La mayoría de los métodos transversales de DOM de jQuery operan en una instancia de objeto jQuery y producen una nueva, que coincide con un conjunto diferente de elementos DOM. Cuando esto sucede, es como si el nuevo conjunto de elementos se colocara en una pila que se mantiene dentro del objeto. Cada método de filtrado sucesivo empuja un nuevo conjunto de elementos a la pila. Si necesitamos un conjunto de elementos más antiguo, podemos usar end() para sacar los conjuntos de la pila.

over 4 years ago · Santiago Trujillo Denunciar

0

ver end()

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda