jQuery自定义选择器索引不起作用?

时间:2013-09-27 07:22:13

标签: jquery jquery-selectors

我开始编写自定义选择器(什么都不做):

$.expr[':'].blabla = function (elem,idx,meta,items) 
{
  console.log(idx);
   return true; //just for testing
}

运行它:(我有10个空div)

$(function (){$("div:blabla").text('3');});

但控制台始终在idx上显示0

我做错了什么?

jsbin

1 个答案:

答案 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不允许你获取元素的索引,但可能你可以使用计数器来解决这个问题。