如何让jquery在执行另一个函数更新行颜色之前等待一个函数完成?
我正在使用jQueryUISortable。重新排列行时,我希望将行颜色重置为斑马条纹。这是我正在使用的代码如何让jquery在执行另一个函数更新行颜色之前等待一个函数完成?,jquery,Jquery,我正在使用jQueryUISortable。重新排列行时,我希望将行颜色重置为斑马条纹。这是我正在使用的代码 function reset_rows() { $("#rank tbody tr").removeClass("row1","row2"); $("#rank tbody tr:even").addClass("row1"); } $("#rank tbody").sortable({ update : function() { reset_rows(); } }); 该
function reset_rows() {
$("#rank tbody tr").removeClass("row1","row2");
$("#rank tbody tr:even").addClass("row1");
}
$("#rank tbody").sortable({
update : function() {
reset_rows();
}
});
该函数添加正确的行颜色,然后立即删除所有行颜色。如何让jquery先删除行类,然后再将行1类添加回偶数行?无论我在代码中使用函数的顺序如何,它都会首先添加row1类。尝试使用此语法
$('rank tbody tr:even').addClass(function() {
$("#rank tbody tr").removeClass("row1","row2");
return "row1";
});
我想知道你的CSS或类似的东西是否有问题,因为基本上这应该是可行的。不过,我想我会稍微改变一下:
$('tbody').sortable({
update: function() {
$('tr:odd').removeClass("even").addClass("odd");
$('tr:even').removeClass("odd").addClass("even");
}
});
(显然,您需要包含一些选择器,我刚刚在示例页面上完成了所有操作。)
您实际上不需要两个类(如果我误读了这篇文章,很抱歉您没有实际使用两个类),您可以将一个类应用于(比如)偶数行,这使它更简单:
$('tbody').sortable({
update: function() {
$('tr:odd').removeClass("even");
$('tr:even').addClass("even");
}
});
离题,但我假设您是在使用JavaScript和类来实现这一点,因为您必须支持不能直接使用CSS的
nth child
pseudo类等来实现这一点的浏览器。。。(遗憾的是,IE6仍然是生活的现实,不是吗?:-)请记住,传递给addClass()
的函数在每个tr:even
上都被调用。因此,如果有20个,那么您将从DOM中选择所有“#rank tbody tr”
,并调用.removeClass()
20次,每次都删除您返回的任何先前的行1
。因此,只有最后一个类仍将保留其row1
类,因为其他类已被多次删除。另外,您没有正确调用.removeClass()
。它应该是.removeClass('一两')
。