Pregunta

Usando jQuery, me gustaría localizar un nodo precedente de un nodo dado.¡Es posible que el nodo precedente y el nodo dado no tengan el mismo nodo principal!Por favor, compruebe el siguiente fragmento:

<div class="container">
<div id="sec1">
    <p>Some text</p>
    <p><b>Some</b> text<</p>
    <p>Some <b>more</b> text</p>
</div>
<div id="sec2">
    <p>just a text</p>
</div>
<div id="sec3">
    <p>another <span id="cursorPos1"></span>text</p>
    <p><b>yet</b> another<span id="cursorPos2"></span> text</p>
</div>

Suponiendo si el nodo dado actual es $("span#cursorPos1"), y lo que me gustaría localizar es el texto en negrita anterior, entonces el resultado debe ser "<b>more</b>".Aquí, el nodo dado está en div#sec3, y el nodo de precedente objetivo está en div#sec1.

Si el nodo dado actual es $("span#cursorPos2"), entonces el texto en negrita anterior es "<b>yet</b>".Aquí, tanto el nodo dado como el nodo de precedición del objetivo se encuentran en el mismo div#sec3.

Básicamente, la jerarquía no debe ser considerada en absoluto.De un nodo dado, el selector simplemente debe encontrar la coincidencia anterior.

Por favor, hágamelo saber sobre cómo se puede hacer esto.

gracias
Srikanth

¿Fue útil?

Solución

No es una solución muy agradable, pero creo que esto hace el truco.Idea es encontrar todas las etiquetas en negrita y el elemento del cursor, busque la posición del cursor en la matriz resultante y luego devuelva el elemento antes de él.

Solo lanzó esto juntos, probablemente hay mejores formas.Si usa esto, es probable que la comprobación de errores sea probablemente también.

prevBold = function(myId) {

var boldAndMe = $('#' + myId + ', b').toArray();
    var me = $('#' + myId).get(0);
    var myPos = boldAndMe.indexOf( me );

    return myPos > 0 ? $( boldAndMe[myPos-1] ) : null;

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top