我开始编写自定义选择器(什么都不做):
$.expr[':'].blabla = function (elem,idx,meta,items)
{
console.log(idx);
return true; //just for testing
}
运行它:(我有 10 个空 div)
$(function (){$("div:blabla").text('3');});
但控制台总是显示0
在 idx。
我究竟做错了什么 ?
我开始编写自定义选择器(什么都不做):
$.expr[':'].blabla = function (elem,idx,meta,items)
{
console.log(idx);
return true; //just for testing
}
运行它:(我有 10 个空 div)
$(function (){$("div:blabla").text('3');});
但控制台总是显示0
在 idx。
我究竟做错了什么 ?
在 jquery 1.8 自定义伪选择器被破坏,从 1.8.1 开始,他们建议使用如下构造(链接) - 使用来自 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 不允许您获取元素的索引,但您可能可以使用计数器解决此问题。