任何div id的jQuery选择器,包含指定的数字或更高的数字

时间:2012-09-12 11:13:21

标签: jquery html

我有一个问题,我无法弄清楚如何解决!如果您有任何想法,请协助:)

在我的DOM中有一堆objets,如下所示:

<div id=Line1>1</div>
<div id=Line2>2</div>
<div id=Line3>3</div>
<div id=Line4>4</div>
<div id=Line5>5</div>
<div id=Line6>6</div>
<div id=Line7>7</div>
<div id=Line8>8</div>
<div id=Line9>9</div>
<div id=Line10>10</div>

我需要得到一个包含任何div为Line6-10的jQuery对象(即包含6或更高版本的内容)....我试过用.gt()来玩但是无济于事。

帮助将不胜感激

7 个答案:

答案 0 :(得分:5)

选择ID为{Line'的<div>,然后将匹配的设置减少到第5个之后(索引从0开始):

$('div[id^=Line]:gt(4)')

DEMO

答案 1 :(得分:2)

使用jQuery选择器是不可能的。最好的方法是slice方法:

$('div').slice(5); //select the sixth element and those after it

或者,如果您必须进行计算(例如,如果不是所有元素都存在或者它们没有按顺序排列),您可以执行以下操作:

$('div').filter(function() {
    return (+this.id.slice(4) >= 6);
});

答案 2 :(得分:1)

您可以使用filter()

var divs = $("div[id^='Line']").filter(function(){
    var text = "Line";
    var value = this.id.split(text)[1];

    return (value > 5);
});

DEMO

答案 3 :(得分:0)

如果您需要专门Line6Line10,则可以使用,运算符:

var q = $('#Line6,#Line7,#Line8,#Line9,#Line10');

您可以动态创建选择器,即从xy的项目:

var s = [];
for (var i = x; i <= y; i++) s.push('#Line' + i);
var q = $(s.join(','));

答案 4 :(得分:0)

您错过了ID属性的引号。

<div id=Line1>1</div>
      --^

尝试使用filter方法。

$('div[id^="line"]').filter(function(){
   var = this.id.match(/\d+/g);
   return (id >= 6 && id <= 10)  
})

http://jsfiddle.net/jWY3Q/

答案 5 :(得分:0)

试试这个

<强> $( “DIV [ID ^ = '5号线']”)。nextAll( “DIV [ID ^ = '行']”)

有关nextAll()

的API

有关attribute starts with

的API

答案 6 :(得分:0)

我的解决方案使用Attribute Starts With Selector.filter()

$(function() {
   $elems = $("div[id^='Line']");
    $elems.filter(function() {
        var matches = this.id.match(/\d+/);
        var numb = parseInt(matches[0]);
        return ((numb > 5) && (numb <= 10));                
    });
});

jsFiddle here