动态改变类

时间:2010-11-02 13:30:09

标签: jquery

我有很多同一类“first”

的项目
  • 我想保留第一项的课程而不做任何改变
  • 我想让最后一项的课程为“最后”
  • 我想删除第一个和最后一个之间所有项目的类。

我试过了:

var mailHeadding = $('.first');
$.each(mailHeadding, function (indx) {
    if (indx == mailHeadding.length) {
        mailHeadding[indx].removeClass('first').addClass('last');
    }
    else if (indx != 0) {
        mailHeadding[indx].removeClass('first');
    }
});

mailHeadding[indx]替换为"this"

这仍然不起作用。

4 个答案:

答案 0 :(得分:4)

$('.first:gt(0)').removeClass('first').last().addClass('last');

这使用the greater than selector来获取.first类的所有元素都大于提供的从零开始的索引(在本例中为0,意思是第一个)。

然后uses .removeClass()从中删除first类,uses .last()跳转到最后一个,uses .addClass()添加last类。

答案 1 :(得分:1)

试试这个:

$('.first').slice(1)
    .removeClass('first')
    .last().addClass('last');

要解释这里发生了什么:

  1. 选择first
  2. 的所有成员
  3. 使用slice()方法选择除选择
  4. 中的第一个元素以外的所有元素
  5. 使用removeClass()方法从这些元素中删除first类。
  6. 使用last()方法仅选择选择中的最后一个元素
  7. 使用addClass()方法将last类添加到此元素。

答案 2 :(得分:1)

if (indx == mailHeadding.length)

这是你的问题。索引介于0length - 1之间(包括)。因此,如果长度为5,则indizes为0, 1, 2, 3, 4。因此,您的比较永远不会产生true。您必须与length - 1进行比较。

答案 3 :(得分:0)

$('.<classes>:first-child').addClass('first');
$('.<classes>:not(:first-child)').removeClass('first');
$('.<classes>:last-child').addClass('last');

总结了如何使用jquery来解决这个问题