相关疑难解决方法(0)

在jQuery 1.8中的自定义筛选器选择器中获取"匹配"对象

作为参考,这里有一篇关于使用jQuery创建自定义过滤器选择器的文章.


介绍:

对于那些不熟悉jQuery的自定义滤波器选择器的人,这里有一个关于它们的快速入门:

如果需要可重用filter,可以通过向jQuery.expr[':']对象添加自己的函数来扩展jQuery的选择器表达式.

该函数将在当前集合中的每个元素上运行,并应返回true或false(非常类似filter).三位信息传递给此函数:

  1. 有问题的元素

  2. 整个集合中此元素的索引

  3. match从正则表达式匹配返回的数组,其中包含更复杂表达式的重要信息.

一旦你扩展jQuery.expr[':'],你可以用它在你的jQuery选择过滤器,就像你使用任何内置者的(:first,:last,:eq()等)


这是一个示例,我们将过滤分配了多个类的元素:

jQuery.expr[':'].hasMultipleClasses = function(elem, index, match) {
    return elem.className.split(' ').length > 1;
};

$('div:hasMultipleClasses');
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/acTeJ/


在上面的例子中,我们没有使用match传入我们函数的数组.让我们尝试一个更复杂的例子.在这里,我们将创建一个过滤器来匹配具有高于tabindex指定数量的元素:

jQuery.expr[':'].tabindexAbove = function(elem, index, match) {
    return +elem.getAttribute('tabindex') > match[3];
};

$('input:tabindexAbove(4)');
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/YCsCm/

这是有效的原因是因为match数组是从用于解析选择器的正则表达式返回的实际数组.所以在我们的例子中,match将是以下数组:

[":tabIndexAbove(4)", "tabIndexAbove", "", "4"]
Run Code Online (Sandbox Code Playgroud)

如您所见,我们可以通过使用来获得括号内的值match[3]. …

javascript jquery jquery-selectors

23
推荐指数
2
解决办法
2436
查看次数

标签 统计

javascript ×1

jquery ×1

jquery-selectors ×1