我正在使用可排序的jQuery UI。重新排列行后,我想将行颜色重置为斑马条纹。这是我正在使用的代码。

function reset_rows() {
 $("#rank tbody tr").removeClass("row1","row2");
 $("#rank tbody tr:even").addClass("row1");
}
$("#rank tbody").sortable({
 update : function() {
  reset_rows();
 }
});


该函数添加正确的行颜色,然后立即将其全部删除。我怎样才能让jquery先删除行类,然后再将row1类添加回偶数行?无论我在代码中使用函数的顺序如何,它都会首先添加row1类。

最佳答案

我想知道您的CSS是否有问题,因为基本上可以工作。不过,我认为我会做些不同的事情:

$('tbody').sortable({
  update: function() {
    $('tr:odd').removeClass("even").addClass("odd");
    $('tr:even').removeClass("odd").addClass("even");
  }
});


(显然,您将需要包含一些选择器,我只是在示例页面上完成了所有操作。)

Live example

您实际上并不需要两个类(如果我读错了这个,我很抱歉,您实际上并没有使用两个类),您可以将一个类应用于(说)偶数行,这使它更简单:

$('tbody').sortable({
  update: function() {
    $('tr:odd').removeClass("even");
    $('tr:even').addClass("even");
  }
});


Live example



偏离主题,但我认为您正在使用JavaScript和类来完成此操作,因为您必须支持无法直接使用CSS的nth-child伪类执行此操作的浏览器,例如...(可悲的是,IE6仍然是现实生活,不是吗?:-))

10-08 08:08