2

我有一个带有 ID 的 5 个 Div - #C1、#C2、#C3、#C4 和 #C5

有什么方法可以让我使用选择器一次选择所有 [连续] id?

我现在能做的就是:

 $('#C1,#C2,#C3,#C4,#C5').css({ SOME CSS });

当ID是连续顺序时,还有其他方法可以选择吗?

我想从 1 到 5 中选择 ID。

提前致谢..

4

5 回答 5

4

最简单的解决方案是将 a 分配class<div>元素,并将其用作选择器:

<div id="C1" class="selectMe"> ... </div>
<div id="C2" class="selectMe"> ... </div>
<div id="C3" class="selectMe"> ... </div>

然后简单地说:

$('div.selectMe').css({ ... });
于 2013-06-07T08:53:14.997 回答
3

可以试试

$("div[id^='C']").css({ SOME CSS });

'^' 将代表以'C' 开头的 div id,并为您的 css 选择它们

以上将选择所有 id 以“C”开头的 div 或者如果您只想选择 5,那么您可以尝试

for(var i = 1 ; i < 6 ; i++) {
     $("#C"+i).css({SOME CSS});
}
于 2013-06-07T08:43:19.253 回答
1

使用那种选择器

$('[id^=C]').filter(function(i, v){
    return !isNaN(v.id[1]);
}).css({ SOME CSS })

Demo

于 2013-06-07T08:43:20.693 回答
1

我不确定您到底想要完成什么,但看到您正在尝试将 CSS 规则应用于这些元素,我认为使用 ID 定位多个元素可能不是正确的做法。

如果您尝试定位多个元素,则应该使用类。这也适合一种很好的工作方式,因为同类元素通常已经共享 CSS 规则的类。

所以你应该给你的元素添加一个类,然后改变:

$('#C1,#C2,#C3,#C4,#C5').css({ SOME CSS });

经过

$('.class').css({ SOME CSS });

如果你真的想获取具有连续 ID 号的 DOM 元素,你可以这样做:

function getConsecutiveID(prefix){

    prefix = '#'+prefix;
    var stop = false;
    var selectors = [];
    var i = 1;
    while(!stop){
        if($(prefix+i).length>0){
            selectors.push(prefix+i);
        }else{
            stop =true;
        }
        i++;
    }
    return $(selectors.join(','));

}
getConsecutiveID('C').css({ SOME CSS });
于 2013-06-07T09:15:01.673 回答
0

如果您已经有数组中的数字,则可以使用以下方法执行此操作Array.reduce

$all = [1, 2, 3, 4].reduce(function(jq, i) { return jq.add("#c" + i); }, $());

看到它在行动

这在 IE < 9 中本机不可用,但 MDN 页面有一个您可以使用的 polyfill。

于 2013-06-07T08:54:27.917 回答