如何选择大于值的所有类

时间:2011-07-26 12:25:43

标签: javascript jquery css

假设我有以下内容:

<div class="d1">.</div><br>
<div class="d2">.</div><br>
<div class="d3">.</div><br>
<div class="d4">.</div><br>
<div class="d5">.</div><br>
<div class="d6">.</div><br>
<div class="d7">.</div><br>
<div class="d8">.</div><br>
<div class="d9">.</div><br>
<div class="d10">.</div><br>

是否有一个选择器可以获取所有div,例如d3到d7?

You can fiddle around with it here

请记住,它们可能不符合DOM的顺序。

7 个答案:

答案 0 :(得分:7)

您可以使用match()从类名和filter()中提取数字,以将元素集限制为您想要的子集:

var divs = $("div").filter(function() {
    var number = parseInt(this.className.match(/\d+/)[0], 10);
    return (number >= 3 && number <= 7);
});

答案 1 :(得分:2)

您也可以试试这个。

$('*[class^="d"]').each(function() {
    var number = parseInt($(this).attr("class").match(/\d+/));
    if(number >= 3 && number <= 7){
        $(this).html("Match");
    }
});

http://jsfiddle.net/shaneburgess/nc5e8/15/

答案 2 :(得分:0)

您可以使用:

$(function() {

    var greaterThan = 4;
    var smallerThan = 8;

    $('div').each(function(i, e) {
        if (i > greaterThan && i< smallerThan) $(e).css('background-color', '#ffcc00');
    });

});

答案 3 :(得分:0)

这将获得您想要的范围:

 $('div').slice(2,7).css('background','red');

http://jsfiddle.net/jasongennaro/nc5e8/8/

如果你只想要大于,你可以这样做

 $('div:gt(3)').css('background','red');

http://jsfiddle.net/jasongennaro/nc5e8/13/

答案 4 :(得分:0)

好吧,你总是可以创建特定的css选择器,比如说:

$(specificSelector("div.d", 10, 20))

,其中

specificSelector = function(pref, from, to) {
    var cnames = []
    for (var j = from; j < to; j++) {
        cnames.push(pref + String(j))
    }
    return cnames.join(",")
}

答案 5 :(得分:0)

您只需生成选择器:http://jsfiddle.net/nnZ79/

var start = 3, 
    stop = 7,
    selector = [];

for (; start <= stop; start++) {
    selector.push('.d'+start);
}

$(selector.join(',')).css('background', 'red');

答案 6 :(得分:0)

使用filterfind方法,您可以将gt和lt用于特定搜索或任何正则表达式,以使搜索更具针对性