Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   JQuery next метод (https://javascript.ru/forum/events/11162-jquery-next-metod.html)

mixail123 10.08.2010 17:46

JQuery next метод
 
Есть следующий кусок верстки:
<ul id="inside_gallery2" style="left: 0px;">
<li> <a  class="current" rel="/public/files/images/1349.jpg" href="/anonses/view/efjf.html"> text1</a> </li>
<li> <a  rel="/public/files/products/putin.jpg" href="http://www.rian.ru/trend/medvedev_finland_20072010/"> text2</a> </li>
<li> <a  rel="/public/files/images/1478.jpg" href="/anonses/view/sdfsdddddd.html">text3</a> </li>
<li> <a  rel="/public/files/images/1467.jpg" href="/anonses/view/32.html"> text4></a> </li>                    
</ul>

Как видите здесь первый тег "а" имеет класс current, задача такая, по клику на определенном элементе, присвоить следующему элементу "а" класс current, а у того "а" корорый относился к классу current его убрать. Т.е. что бы после работы скрипта код имел следующий вид:
<ul id="inside_gallery2" style="left: 0px;">
<li> <a  rel="/public/files/images/1349.jpg" href="/anonses/view/efjf.html"> text1</a> </li>
<li> <a  class="current" rel="/public/files/products/putin.jpg" href="http://www.rian.ru/trend/medvedev_finland_20072010/"> text2</a> </li>
<li> <a  rel="/public/files/images/1478.jpg" href="/anonses/view/sdfsdddddd.html">text3</a> </li>
<li> <a  rel="/public/files/images/1467.jpg" href="/anonses/view/32.html"> text4></a> </li>                    
</ul>

Это нужно чтобы считать атрибут rel с элемента который имеет класс "current" и поменять картинку.
Пробовал таким образом:
Код:

$("#someid").click(function(){
                             
                              $('#inside_gallery2 li a.current').next().addClass("current");
                              $('#inside_gallery2 li a.current').prev().removeClass("current");
                             
                                var res = "/phpThumb/phpThumb.php?w=213&h=131&zc=1&src=" + $('#inside_gallery2 li a.current').attr("rel");
                                $("#img123").attr({ src: res });
                       
                      }
)

не работает, гдето накосячил.

exec 10.08.2010 17:48

$('#inside_gallery2 li:has(a.current)').next().find('a').addClass("current").parent().prev().find('a').removeClass('current');

mixail123 10.08.2010 17:56

нет, prev убирать не нужно, т.к. нужно не только добавить к следующему элементу "а" класс current, но и убрать его у предыдущего. Сейчас выложу более простой пример который работает как положено, с таким же алгоритмом. Минуту...

mixail123 10.08.2010 17:58

<li class="third-item" rel="/public/files/products/putin.jpg">list item 3</li>
   <li rel="/public/files/images/1349.jpg">list item 1</li>
   <li rel="/public/files/products/putin.jpg">list item 2</li>
   <li rel="/public/files/images/1478.jpg">list item 4</li>
   <li rel="">list item 5</li>


и
$("#some").click(function(){
                    		
                       	$('li.third-item').next().css('background-color', 'red');
                    	   $('li.third-item').next().addClass("third-item");
                    	   $('li.third-item').prev().removeClass("third-item");
                    	   $('li.third-item').prev().css('background-color', 'white');
                    	  
                    	  var relpict = $('li.third-item').attr("rel");
                    	  res = "http://misha/phpThumb/phpThumb.php?w=213&h=131&zc=1&src=" + relpict;
                    	 //alert(rel);
                    	 $("#img123").attr({ src: res });

                    	  //$('#img123').attr("src") = rel;
                    	   
                       }
                       )


Этот тестовый пример работаен как положено.

exec 10.08.2010 18:01

mixail123, я поправил пост, посмотрите.

mixail123 10.08.2010 18:14

Спасибо огромное exec, то что нужно +

mixail123 10.08.2010 18:57

Если можно прокоментируйте этот код, я опишу как я его понимаю, я вы поправьте меня, если я не прав

$('#inside_gallery2 li:has(a.current)').next().find('a').addClass("cur rent").parent().prev().find('a').removeClass('curr ent');

ищется элемент li содержащий a.current, потом методом find ищется следующий элемент "а" и добовляется ему класс current, потом наверное,
возвращает родителя <a> насколько я понимаю <li>, передвигается на один элемент назад ищет тег <а> и удаляет класс current у него

Kolyaj 10.08.2010 19:14

Цитата:

Сообщение от mixail123
Если можно прокоментируйте этот код

Цитата:

Сообщение от mixail123
$('#inside_gallery2 li:has(a.current)').next().find('a').addClass("cur rent").parent().prev().find('a').removeClass('curr ent');

Это пипец.

inGray 11.08.2010 13:52

Цитата:

Сообщение от Kolyaj (Сообщение 66959)
Это пипец.

:haha:

Логика подсказывает, что не будет тот код работать.


Часовой пояс GMT +3, время: 10:43.