jQuery和Prototype选择器疯狂使用

5
jQuery和Prototype JavaScript库都不允许我使用变量根据索引号选择列表项元素,尽管它们接受硬编码的数字。
例如,在Prototype中可以这样做:
$$('li')[5].addClassName('active');

但是无论我如何将变量转换为数字或整数,这都不起作用:
$$('li')[currentPage].addClassName('active');

在 jQuery 中,我遇到了类似的奇怪问题。下面的代码可以正常工作:

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

但是即使currentPage的值为5且类型为数字,这也不会再次起作用:
jQuery('li').eq(currentPage).addClass("active");

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

3个回答

5

您确定currentPage是一个整数吗?尝试使用以下代码:

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

作为一个简单的健全性检查。如果这样可以,你应该尝试将其转换为Integer


2

看起来我只需要在元素选择器中更加具体,尽管硬编码的数字能够起作用还是有些奇怪。

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

2

确保在访问currentPage变量的代码中,该变量被正确地作用域限定。在你访问它之前,变量是否可能在代码的其他地方被更改?类似Firebug这样的工具可以帮助你在执行时添加断点,并查看变量的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接