使用Less Than&扩展属性选择器。大于jQuery

时间:2011-10-05 05:50:44

标签: javascript jquery html jquery-selectors

扩展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 
});

但我想知道是否有黄油方式?

2 个答案:

答案 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);
});