jQuery和Prototype Selector Madness

时间:2008-09-02 20:41:22

标签: jquery prototypejs css-selectors addclass

jQuery和Prototpye JavaScript库都拒绝允许我使用变量来按索引号选择列表项元素,尽管它们接受硬编码的数字。

例如,在Prototype中,这有效:

$$('li')[5].addClassName('active');

但无论我如何尝试将变量转换为数字或整数,这都行不通:

$$('li')[currentPage].addClassName('active');

在jQuery中我得到了类似的怪异。这将有效:

jQuery('li').eq(5).addClass("active");

但即使currentPage的值为5且其类型为number:

,这也不会再次起作用
jQuery('li').eq(currentPage).addClass("active");

我正在尝试创建一个JavaScript分页系统,我需要在活动页面按钮上设置类。列表项元素是根据我需要的页数动态创建的。

3 个答案:

答案 0 :(得分:5)

您确定currentPage是一个整数吗?尝试类似:

var currentPage = 5;
jQuery('li').eq(currentPage);

作为简单的健全检查。如果可行,您应该尝试转换为Integer

答案 1 :(得分:2)

确保currentPage变量在访问它的代码中正确确定范围。在访问变量之前,变量是否可以在代码中的其他位置更改?像Firebug这样的工具可以帮助您在执行点添加断点并查看变量的值。

答案 2 :(得分:1)

看起来我只需要在我的元素选择器中更具体,尽管硬编码的数字很有用。

jQuery('#pagination-digg li').eq(currentPage).addClass("active");