2010-07-22 6 views
2

Utilisation de jQuery Je souhaite localiser un nœud précédent d'un nœud donné. Le noeud précédent et le noeud donné peuvent ne pas avoir le même noeud parent! S'il vous plaît vérifier le fragment suivant:jQuery - nœud précédent - pas de nœud parent commun

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

Supposant si le noeud courant donné est $("span#cursorPos1"), et ce que je voudrais trouver est le texte en gras précédent, le résultat devrait être « <b>more</b> ». Ici, le noeud donné est div#sec3 et le noeud précédent cible est div#sec1.

Si le nœud actuel est $("span#cursorPos2"), le texte en gras précédent est "<b>yet</b>". Ici, le noeud donné et le noeud précédent cible sont tous les mêmes div#sec3.

Fondamentalement, la hiérarchie ne devrait pas être considérée du tout. À partir d'un nœud donné, le sélecteur devrait simplement trouver la correspondance précédente.

S'il vous plaît laissez-moi savoir sur la façon dont cela peut être fait.

Merci
Srikanth

Répondre

2

Pas une solution très agréable, mais je pense que cela fait l'affaire. L'idée est de trouver toutes les balises en gras et l'élément curseur, de rechercher la position du curseur dans le tableau résultant, puis de renvoyer l'élément précédent. Juste jeté cela ensemble, il y a probablement de meilleurs moyens. Si vous utilisez ceci, une vérification d'erreur est probablement aussi dans l'ordre.

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; 

} 
+0

Merci beaucoup. Cela fonctionne bien, et pour l'instant je vais régler avec cette solution. –