在'current'之前交换元素中元素的类

时间:2012-11-11 15:32:08

标签: jquery

我有一个div列表。一个被标记为当前。我需要在一个元素中交换一个类,其中包含当前前面的所有div。

<div id="1">
    <span class="green"></span>
</div>

<div id="2">
    <span class="green"></span>
</div>

<div id="3" class="current">
    <span class="green"></span>
</div>

<div id="4">
    <span class="green"></span>
</div>

因此,ID为1和2的div中的“green”类应更改为“red”。当AJAX函数在成功时返回不同的ID时,类'current'会被更改:

var ct = $('.current').attr('id');

$.ajax({
    ...
dataType: "json",

success: function(data){
    var cid = data.cid;

    if (ct != cid) {
        $('div').removeClass('current');
        $('div#'+cid).addClass('current');
    }
}

不确定如何添加该SPAN类交换。我是否为所有跨度添加.each()?那么如何停止一次并且不要改变过去的“当前”?

1 个答案:

答案 0 :(得分:1)

这是使用jQuery的lt()选择器的理想之地。您必须提取selected div的索引,然后对索引小于所选元素的所有元素执行操作。

var selectedIndex = $("div.current").index();
var previousDivs = $("div:lt("+selectedIndex+")");

您现在拥有一个变量previousDivs,其中包含所选元素之前的所有元素。

参考文献 -