2010-06-05 5 views
0

Je suis débutant dans jQuery. Ce serait génial si quelqu'un pouvait m'aider avec ça. Je ne suis pas sûr de ce qui ne va pas ici.jQuery - Sélection d'une zone de texte avant une balise span avec une certaine classe CSS

C'est ce que j'essaie. J'ai un élément avec la classe "spanClass1". Avant cet élément, il y a un autre élément et un élément de zone de texte. Mon exigence est de faire défiler jusqu'à cet élément de zone de texte et de mettre l'accent sur l'élément. Et aussi j'ai ajouté quelques css pour voir le changement se produire. Mais le problème est que le code ci-dessus ne semble pas fonctionner. Si je remplace le sélecteur dans .prev (..) par 'span', cela fonctionne. Est-ce que je manque quelque chose? Ce serait vraiment utile si quelqu'un pouvait m'aider avec ça.

<html><br /> 
&lt;head&gt;<br /> 
&lt;title&gt;<br />jQuery&lt;/title&gt;<br /> 
&lt;script type="text/javascript" language="javascript" src="jquery.js"&gt;<br />&lt;/script&gt;<br /> 
&lt;script type="text/javascript" language="javascript"&gt;<br /> 
$(document).ready(function() {<br /> 
    var elem = $('.spanClass1').get();<br /> 
    alert(elem.length);<br /> 
    alert("Text box elements " + $('input[type=text]').get().length);<br /> 
    if (elem.length &gt; 0)<br /> 
    {<br /> 
    var elem1 = $(elem[0]).prev('input[type=text]');<br /> 
    $(this).scrollTop($(elem1).position().top);<br /> 
    $(elem1).css('background-color','red');<br /> 
    $(elem1).focus();<br /> 
    }<br /> 
    });<br /> 
&lt;/script&gt;<br /> 
&lt;/head&gt;<br /> 
&lt;body&gt;<br /> 
&lt;br /&gt;<br /> 
&lt;div&gt;<br /> 
&lt;input type="text" id="text1" value="test" class="selected"&gt;<br />&lt;span id="elem4" class="sClass1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/span&gt;<br />&lt;span id="elem5" class="spanClass1"&gt;<br />This is a test&lt;/span&gt;<br />&lt;br /&gt;<br /> 
&lt;/div&gt;<br /> 
&lt;/body&gt;<br /> 
</html> 

Merci d'avance.

Cordialement, Karthik

Répondre

2

L'appel .prev() retourne uniquement le précédent élément, pas d'autres éléments qui lui sont soumises.

Vous voulez que le .prevAll() appel:

var elem1 = $(elem[0]).prevAll('input[type=text]'); 
+0

Merci! Ça a marché! Il ne m'est jamais venu à l'esprit d'essayer PrevAll, même si j'ai vu quelques articles sur prevAll. Je me cassais la tête pour savoir pourquoi ça ne fonctionnait pas. Merci beaucoup! – k25

0

Vous devez utiliser. prevAll() au lieu de .prev()

+0

Merci Vishal! Ça a marché!! – k25

Questions connexes