假设我有以下内容:
<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的顺序。
答案 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");
}
});
答案 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');
答案 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)