Расширение селектора атрибутов с помощью Less Than & Greater Than в jQuery - PullRequest
5 голосов
/ 05 октября 2011

Каким будет правильный способ расширить селектор атрибутов jQuery, чтобы он поддерживал «Меньше и больше, чем»?

У меня есть некоторые элементы, которые содержат настраиваемый атрибут SequenceNumber, содержащий целое число.(Прежде чем кто-либо начнет, я не могу использовать свойство данных (я думаю?), Потому что этот html определяется во время выполнения и генерируется на стороне сервера)

В любом случае.Чего я хочу добиться, так это возможности выбрать несколько элементов, которые содержат SequenceNumber МЕЖДУ X И Y.

Так что в основном что-то вроде этого

$("#divSequenceGrid ul[SequenceNumber=>'1'][SequenceNumber<='10']").each(func);

Очевидно, что я могу сделать этособирается

$("#divSequenceGrid ul").each(function (index, value) {
    //Push into an array those that fit my criteria 
});

Но мне интересно, есть ли масляный путь?

Ответы [ 2 ]

11 голосов
/ 05 октября 2011

Использование .filter()

  $("#divSequenceGrid ul").filter(function(){
        return  $(this).attr("sequenceNumber") >=1 && $(this).attr("sequenceNumber") <=10}).css("color", "red");

Вот демоверсия: http://jsfiddle.net/jFt9N/3/

2 голосов
/ 05 октября 2011

Вы можете использовать выражения выбора jQuery, как это

$.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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...