jQuery - выделение текстового поля перед тегом span с определенным классом CSS - PullRequest
0 голосов
/ 05 июня 2010

Я новичок в jQuery. Было бы здорово, если бы кто-нибудь мог помочь мне с этим. Я не уверен, что здесь происходит не так.

Это то, что я пытаюсь. У меня есть элемент с классом «spanClass1». Перед этим элементом есть еще один элемент и элемент текстового поля. Мое требование состоит в том, чтобы прокрутить до этого элемента текстового поля и сосредоточиться на элементе. А также я добавил немного CSS, чтобы увидеть, как происходят изменения. Но проблема в том, что приведенный выше код не работает. Если я заменю селектор в .prev (..) на 'span', это сработает. Я что-то пропустил? Было бы очень полезно, если бы кто-то мог помочь мне с этим.

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

Заранее спасибо.

С уважением, Картик

Ответы [ 2 ]

2 голосов
/ 05 июня 2010

Вызов .prev() возвращает только предыдущий элемент, но не другие элементы, предшествующие ему.

Вы хотите .prevAll() звонить:

var elem1 = $(elem[0]).prevAll('input[type=text]');
0 голосов
/ 05 июня 2010

Вам нужно использовать. prevAll() вместо .prev()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...