Domanda

Usando jQuery vorrei individuare un nodo precedente da un determinato nodo.Il nodo precedente e il nodo indicato non possono avere lo stesso nodo principale!Si prega di controllare il seguente frammento:

<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>
.

Supponendo se il nodo indicato in corrente è $("span#cursorPos1") e ciò che vorrei individuare è il testo in grassetto precedente, quindi il risultato dovrebbe essere "<b>more</b>".Qui, il nodo dato è in div#sec3, e il nodo precedente del bersaglio è in div#sec1.

Se il nodo indicato in corrente è $("span#cursorPos2"), il testo in grassetto precedente è "<b>yet</b>".Qui, sia il nodo indicato che il nodo precedente di precedenza sono nello stesso div#sec3.

Fondamentalmente, la gerarchia non dovrebbe essere considerata affatto.Da un determinato nodo il selettore dovrebbe semplicemente trovare la partita precedente.

Per favore fammi sapere su come questo può essere fatto.

grazie
Srikanth

È stato utile?

Soluzione

Non è una soluzione molto bella, ma penso che questo fa il trucco.L'idea è di trovare tutti i tag audaci e l'elemento cursore, cercare la posizione del cursore nell'array risultante, quindi restituire l'elemento prima di esso.

Ha appena lanciato questo insieme, probabilmente ci sono modi migliori.Se si utilizza questo, anche qualche controllo degli errori è probabilmente in ordine.

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;

}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top