如何获取列表中的下一个项目

时间:2012-10-09 14:32:11

标签: jquery

尝试创建一个可点击的事件,以便在单击#next时,在这种情况下将2000-2001等的html发送到带有下划线的body标签上的类。 body class =“_ 2000-2001”。

当前日期已选择类,每次单击#next时,所选类将移动到该标记。

我需要弄清楚的是如何在每次点击时在列表中获取下一个li标签,而不是ul#dates li a.selected。

我应该使用.next()函数吗?

<ul id="dates">                 
    <li><a href="#1970-1974" class="selected">1970-1974</a></li>        
    <li><a href="#1974-1980">1974-1980</a></li>         
    <li><a href="#1980-1992">1980-1992</a></li>         
    <li><a href="#1992-2000">1992-2000</a></li>         
    <li><a href="#2000-2001">2000-2001</a></li>     
    <li><a href="#2001-2004">2001-2004</a></li>         
    <li><a href="#2004-2006">2004-2006</a></li>         
    <li><a href="#2006-2007">2006-2007</a></li>         
    <li><a href="#2007-2008">2007-2008</a></li>         
    <li><a href="#2009-2011">2009-2011</a></li>     
    <li><a href="#Present">Present</a></li>
</ul>

<a href="#" id="next">+</a>
<a href="#" id="prev">-</a>

JQuery的:

$('a#next').click(function() {
    var htmlStr = $('ul#dates li a.selected').html();
    console.log(htmlStr);
    $('body').attr('class', function() {
        return '_' + htmlStr;
    });
});

$('a#prev').click(function() {
    var htmlStr = $('ul#dates li a.selected').html();
    $('body').attr('class', function() {
        return '_' + htmlStr;
    });
});

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

var $cur = '';
var $next = '';
var $prev = '';
var htmlStr = '';

$("#next").on('click', function () {
   $cur = $("#dates li a.selected");
   $next = $cur.parent().next().find('a');
   if ($next.length > 0) {
      $cur.removeClass('selected');
      $next.addClass('selected');
      $('body').attr('class', '_' + $next.text());
   }
});


$("#prev").on('click', function () {
   $cur = $("#dates li a.selected");
   $prev = $cur.parent().prev().find('a');
   if ($prev.length > 0) {
      $cur.removeClass('selected');
      $prev.addClass('selected');
      $('body').attr('class', '_' + $prev.text());
   }
});

答案 1 :(得分:0)

更改

$('ul#dates li a.selected').html();

$('ul#dates li a.selected').parent().next().children().html();

工作fiddle

编辑:使用“ul #date li a.selected”选择器,我们在li元素中选择了锚标记。因此,您必须使用parent()调用向上移动一步,而next()将您带到下一个li元素。因为你想要子元素的html,我们称之为$ .children()。html();.如果li里面有多个元素,你将需要像$ .children()。first()。html();。

这样的东西。