Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何选择大于某个值的所有类_Javascript_Jquery_Css - Fatal编程技术网

Javascript 如何选择大于某个值的所有类

Javascript 如何选择大于某个值的所有类,javascript,jquery,css,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 cl

假设我有以下几点:

<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

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

您可以使用从类名中提取数字,并将元素集限制为所需的子集:

var divs = $("div").filter(function() {
    var number = parseInt(this.className.match(/\d+/)[0], 10);
    return (number >= 3 && number <= 7);
});
 $('div').slice(2,7).css('background','red');
您可以使用以下选项:

$(function() {

    var greaterThan = 4;
    var smallerThan = 8;

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

});

这将获得您想要的范围:

var divs = $("div").filter(function() {
    var number = parseInt(this.className.match(/\d+/)[0], 10);
    return (number >= 3 && number <= 7);
});
 $('div').slice(2,7).css('background','red');
如果你只是想要大于,你可以这样做

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

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

$(specificSelector("div.d", 10, 20))
在哪里


您只需生成选择器:

你也可以试试这个

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

使用和方法,您可以使用gt和lt进行特定的搜索,或者使用任何正则表达式使搜索更具体

我明白了,顺便说一句,您不需要parseInt,也不需要使用jQuery来获取className@qwertymk,关于基数的观点很好,答案更新了。它仍然倾向于调用parseInt而不是依赖于自动转换,虽然:Javascript不太严格并且'a'=['a'],但是如果您有[0],它仍然适合更好的可读性,因为它提供了关于原始对象的更多信息。仅供将来参考,JS提供了array.join','如果将其与字符串进行比较,以获得其字符串化表示形式。所以['a','b']='a,b'是真的。@Zanfa:实际上,它只调用对象的toString方法,在数组的情况下,该方法与arr.join具有相同的效果,','默认情况下,您假设类名中的数字与DOM树中的顺序之间存在微小的对应关系。你是对的,这是合乎逻辑的。然而,一般来说,我们可以有一些不同编号的集合。不需要。每个集合,您可以直接将一个函数传递给。对于不想更改的元素,不要返回任何内容或返回未定义的内容。这在css文档中没有被调用,但它的工作方式与attr相同,行为也在那里被调用。