在执行另一个函数更新行颜色之前,如何使jquery等待一个函数完成?

时间:2010-09-25 16:08:29

标签: jquery

我正在使用jquery ui sortable。重新排列行时,我想将行颜色重置为斑马条纹。这是我正在使用的代码。

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类,无论我在代码中使用函数的顺序是什么。

2 个答案:

答案 0 :(得分:1)

我想知道你的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仍然是生活的现实,不是吗?:-))

答案 1 :(得分:0)

尝试使用此语法

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