2011-10-05 32 views
5

Điều gì sẽ là cách chính xác để mở rộng bộ chọn thuộc tính jQuery để nó hỗ trợ Ít hơn và Lớn hơn?Mở rộng bộ chọn thuộc tính với Ít hơn & Lớn hơn trong jQuery

Tôi có một số phần tử chứa thuộc tính tùy chỉnh SequenceNumber chứa số nguyên. (Trước khi mọi người bắt đầu, tôi không thể sử dụng thuộc tính dữ liệu (tôi nghĩ?) Vì html này được xác định khi chạy và tạo ra serverside)

Dù bằng cách nào. Những gì tôi đang tìm kiếm để đạt được là khả năng chọn một số yếu tố có chứa một SequenceNumber giữa X và Y.

Vì vậy, về cơ bản một cái gì đó như thế này

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

Rõ ràng tôi có thể làm điều này bằng cách

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

Nhưng tôi tự hỏi liệu có cách bơ không?

+0

có thể lọc có thể phục vụ nhu cầu của bạn? http://api.jquery.com/filter/ –

Trả lời

11

Sử dụng .filter()

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

Dưới đây là một bản demo: http://jsfiddle.net/jFt9N/3/

+0

cảm ơn bạn, điều này hoạt động tốt – M98

2

Bạn có thể sử dụng jQuery biểu Selector như thế này

$.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); 
}); 
+0

bạn cũng có thể kích hoạt các biểu thức 'var parts = m [3] .split ('-'), n = parseInt ($ (e) .attr ('SequenceNumber'); return n> = parseInt (các phần [0]) && n <= parseInt (các phần [1]); ' – verybadbug

Các vấn đề liên quan