jQuery自定义过滤器问题:元素堆栈太多
Posted
技术标签:
【中文标题】jQuery自定义过滤器问题:元素堆栈太多【英文标题】:jQuery custom filter problem: element stack is way too much 【发布时间】:2011-05-20 04:48:36 【问题描述】:我正在尝试实现 ":random" 选择器,它从元素堆栈中选择一个随机元素。
这是代码:http://jsfiddle.net/nuSWF/
问题是选择器有时会尝试选择一个不存在的元素(超出索引)。所以我准备了突出显示原因的演示代码,但我不明白为什么。我似乎是一个错误或什么的。
P.S:我知道我可以用其他方法选择一个随机元素,但这次我必须实现它,也想知道里面发生了什么。
【问题讨论】:
我不确定,但length
不是总是比最大索引多一吗? (长度 = 10 个元素最后一个元素 = 9)
还有,索引失败时有什么值?
【参考方案1】:
您所看到的堆栈长度是正常的,它只是评估mydiv1
中的all <a>
元素上的:random
选择器@ 之前 @ 987654321@,所以此时的长度是4。
例如,这会产生您期望的结果:
var elements2 = $('#mydiv1>a').filter(':random');
You can test it out here.
所以总体上发生的情况是您的选择器确实过滤到随机的 <a>
元素...但是这些 可能会或可能不会稍后会被 >
child selector 进一步过滤掉(如果它们是在<span>
下,它们会被过滤)。如果您考虑一下,所有选择器都是如此...您执行的任何过滤器都只会减少元素集...它们以后可能会被更多选择器进一步过滤。
【讨论】:
以上是关于jQuery自定义过滤器问题:元素堆栈太多的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC过滤器获取自定义jquery ajax标头
2 个自定义组合框,在 DataTables 中过滤结果,获取 2 个组合框来过滤结果的问题 - JavaScript、jQuery