我开始编写自定义选择器(什么都不做):
$.expr[':'].blabla = function (elem,idx,meta,items)
{
console.log(idx);
return true; //just for testing
}
运行它:(我有10个空div)
$(function (){$("div:blabla").text('3');});
但控制台始终在idx上显示0
。
我做错了什么?
答案 0 :(得分:1)
在jquery 1.8中,自定义伪选择器被破坏,并且从1.8.1开始他们建议使用如下所示的构造(link) - 使用来自sizzle选择器引擎的createPseudo,并且如果它不存在则支持向后兼容性:
$.expr[':'].blabla = $.expr.createPseudo ?
$.expr.createPseudo(function() {
return function( elem, doc, isXML ) {
//return true for matched elements
};
}) :
function( elem, i, match ) {
//return true for matched elements
};
尽管如此,createPseudo不允许你获取元素的索引,但可能你可以使用计数器来解决这个问题。