扩展jQuery属性选择器的正确方法是什么,以便它支持小于和大于?
我有一些元素包含一个包含整数的自定义属性SequenceNumber。 (在任何人开始之前我不能使用数据属性(我认为?)因为这个html是在运行时确定的并且生成了服务器端)
无论哪种方式。我希望实现的是能够选择包含一个与X和Y之间的SequenceNumber的元素。
所以基本上是这样的
$("#divSequenceGrid ul[SequenceNumber=>'1'][SequenceNumber<='10']").each(func);
显然我可以通过
来做到这一点$("#divSequenceGrid ul").each(function (index, value) {
//Push into an array those that fit my criteria
});
但我想知道是否有黄油方式?
答案 0 :(得分:11)
使用.filter()
$("#divSequenceGrid ul").filter(function(){
return $(this).attr("sequenceNumber") >=1 && $(this).attr("sequenceNumber") <=10}).css("color", "red");
这是一个演示: http://jsfiddle.net/jFt9N/3/
答案 1 :(得分:2)
您可以像这样使用jQuery Selector表达式
$.extend($.expr[':'], {
sMore: function(e, i, m) { return parseInt($(e).attr('SequenceNumber')) >= m[3]; },
sLess: function(e, i, m) { return parseInt($(e).attr('SequenceNumber')) <= m[3]; }
});
$(function () {
alert($('div:sMore(2):sLess(4)').length);
});