jQuery 自定义选择器 于大等于和小于等于

jQuery.expr[":"].le = function(elem,i,match){
	return elem.rowIndex < match[3] - 0 || elem.rowIndex == match[3] - 0;
};
jQuery.expr[":"].ge = function(elem,i,match){
	return elem.rowIndex > match[3] - 0 || elem.rowIndex == match[3] - 0;
};
//书上说第二个参数i表示当前BOM元素对象在所有匹配元素中的索引位置,从0开始。但我测试时一直得到的都是0.所以改成elem.rowIndex
//第三个参数表示正则表达式执行匹配后的返回的数组对象
match:{
	POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/
}
/**
 其中()是捕获组
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式 (dog) 创建了单一分组,组里包含"d","o",和"g"。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
((A)(B(C)))
(A)
(B(C))
(C)
可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

(?:pattern)
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。
例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。

(?=pattern)
执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。
它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配"Windows 2000"中的"Windows",
但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

var str = "#bomRowBodyLeft tr:lt(3)";
var patt1 = /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/;
document.write(str.match(patt1));

运行结果::lt(3),lt,3

*/


$(function(){
$("#bomRowBodyLeft tr:le(3)").css("color","red");
$("#bomRowBodyLeft tr:ge(3)").css("color","blue");
});

另一种写法:

jQuery.extend(jQuery.expr[":"],{ 
	le : function(elem,i,match){
		return elem.rowIndex < match[3] - 0 || elem.rowIndex == match[3] - 0;
	}
});
jQuery.extend(jQuery.expr[":"],{ 
	ge : function(elem,i,match){
	return elem.rowIndex > match[3] - 0 || elem.rowIndex == match[3] - 0;
	}
});

运行效果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值