Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обратиться к предыдущему элементу (https://javascript.ru/forum/jquery/39517-obratitsya-k-predydushhemu-ehlementu.html)

Blackmore1991 02.07.2013 21:39

Обратиться к предыдущему элементу
 
Помогите обратится к предыдущему элементу
<li .current></li> <li></li> <li></li> <li></li>
при нажатии на <span class="next">вперед</span>

у меня меняется на <li ></li> <li.current></li> <li></li> <li></li>
и т.д.

Как сделать только у предыдущего li менялось css?
$(document).ready(function(){

    var $curr = $(".current");
    $curr.css("background", "");
    $(".next").click(function () {
      $curr = $curr.next();
      $("li").css("background", "yellow");
      $curr.css("background", "");
    });

  });

danik.js 02.07.2013 21:58

Перед выполнением шестой строчки в $curr находится как раз "предыдущий" li. И что-то по коду не видно чтобы класс .current передавался следующему li. И вобще - зачем возиться с css в коде, когда можно оформить все в css-файле через селектор .current ?

Blackmore1991 02.07.2013 22:00

При нажатии на span передается класс current следующему li
(function($) {
(function($) {
$(function() {

  $('ul.tabs').on('click', 'li:not(.current)', function() {
    $(this).addClass('current').siblings().removeClass('current')
      .parents('div.section').find('div.box').eq($(this).index()).fadeIn(150).siblings('div.box').hide();
  })

})
})(jQuery)

danik.js 02.07.2013 22:07

Ну вот, бери теперь фломастеры css файл и раскрашивай свои li'шки. В чем траблы то?

Blackmore1991 02.07.2013 22:16

мне нужно , чтобы когда current перешел на вторую li , то первая li стала желтого цвета, а когда current на 3 li , то вторая li тоже стала бы желтой. Ну и обратно тоже можно.

Blackmore1991 02.07.2013 22:51

Вот почти что мне нужно .
Но на втором шаге он следующий элемент перекрашивает(

$(document).ready(function(){

    var $curr = $(".current");
    $curr.css("color", "#cb2a34");
    $(".step_next").click(function () {
      $curr = $curr.next(); 
	  $(".tabs li").prev().css("color", "#09e8f5");
      $curr.css("color", "#cb2a34");
    });

  });

рони 02.07.2013 23:07

Blackmore1991,
:cray: :write:
вариант кнопок вперёд назад
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
  <style type='text/css'>

li.current
{
    background-color:  #FFFFFF;
}
li{
     background-color: #FFFF00;
}
div.next, div.prev{
   width: 50px;
   float: left;
   cursor:pointer;
}

 </style>
<script type='text/javascript'>
$(window).load(function(){
     $(".next, .prev").click(function () {
     var $curr = $(".current");
     $curr.removeClass('current');
     var go = $(this).text();
     $curr = $curr[go]().size()? $curr[go]() : $curr[(go=='next'?'prev':'next')+'All'](':last');
     $curr.addClass('current');
    });
});
</script>
</head>
<body>
  <div>
    <ul class='menu'>
        <li class="current"> 1 </li>
        <li> 2 </li>
        <li> 3 </li>
        <li> 4 </li>
        <li> 5 </li>
    </ul>
</div>
<div class='next'>next</div>
<div class='prev'>prev</div>
</body>


</html>

danik.js 03.07.2013 05:35

Цитата:

Сообщение от Blackmore1991
мне нужно , чтобы когда current перешел на вторую li , то первая li стала желтого цвета, а когда current на 3 li , то вторая li тоже стала бы желтой. Ну и обратно тоже можно.

Типа метить желтым "посещенные" li? Ну так добавляй класс допустим .visited, и смещай класс .current.

$(".step_next").click(function () {
      $curr.removeClass('current');
      $curr = $curr.next();
      $curr.addClass('visited');
});


А желтый добавишь в css.


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