如何维护列表项的指针[jquery]

时间:2011-04-17 16:47:50

标签: javascript jquery

我正在尝试启用键盘控制(向上/向下箭头)

我的jquery代码为

if($('.yumnak').hasClass('itemCur')) {
    var pntr = $('.yumnak').hasClass('itemCur');
    pntr.next().addClass('itemCur');
    pntr.next().removeClass('item');
    pntr.removeClass('itemCur');
    pntr.addClass('item');
}

和标记为

<ul>
  <li class="yumnak itemCur"><a href="#">one</a></li>
  <li class="yumnak item"><a href="#">two</a></li>
  <li class="yumnak item"><a href="#">three</a></li>
  <li class="yumnak item"><a href="#">four</a></li>
</ul>

在这里,我的pntr不会工作吗?它似乎无法正常工作。如何维护指针??

5 个答案:

答案 0 :(得分:2)

$('.yumnak').hasClass('itemCur')返回一个布尔值,表示它是否有类。

您可能希望编写$('.yumnak.itemCur')来选择包含两个类的元素。

答案 1 :(得分:1)

hasClass只返回一个布尔值。您想要选择您可以这样做的元素:

 var pntr = $('.yumnak.itemCur');

答案 2 :(得分:1)

他们都说了什么。当前var pntr返回true或false,因此您的jquery链接实际上并未附加到任何文档节点。它试图链接到truefalse,这将失败。

你可以设置var pntr = $(this),它应该引用条件中的父级。

所以

if($('.yumnak').hasClass('itemCur')) {
    var pntr = $(this);
    pntr.next().addClass('itemCur');
    pntr.next().removeClass('item');
    pntr.removeClass('itemCur');
    pntr.addClass('item');
}

答案 3 :(得分:0)

var pntr = $('.yumnak').hasClass('itemCur');将返回true或false,具体取决于元素是否包含该类。要获得元素的实际句柄,请使用:

var pntr = $('.yumnak');代替。

答案 4 :(得分:0)

hasClass函数返回一个布尔值。

实际上你在布尔值上调用next()方法。

试试这个:

var pntr;

if ($('.yumnak').hasClass('itemCur')) {
    pntr = $('.yumnak');
} else {
    return; //or do other stuff
}