2011-07-23 28 views
1

我有一个简单的脚本来更改cms的页面顺序。它基于使用jQuery对表格行进行重新排序。现在的问题是,我想延迟从整行中删除高亮类。它会忽略延迟()并立即将其删除。延迟()在表行重新排序

这个想法是,当你将鼠标悬停在一行上时,它会为它添加cell_rollover类。当你点击一个向上/向下箭头时,这个班级保持在那一行 - 显示你,这一行移动。所以大约200毫秒后,它应该删除类。它不..

的箭头代码:

$(".listtable_up, .listtable_down").click(function() { 
    var row = $(this).parents("tr:first"); 
    if ($(this).is(".listtable_up")) { 
     row.insertBefore(row.prev()); 
    } else { 
     row.insertAfter(row.next()); 
    } 
    row.delay("200").removeClass('cell_rollover'); 
}); 

注:cell_rover类被添加到该行与jQuery脚本:

$(".listtable tbody td").hover(function() { 
    $(this).closest('tr').addClass('cell_rollover'); 
}, function() { 
    $(this).closest('tr').removeClass('cell_rollover'); 
}); 

为什么会发生这种情况以及如何解决它?

编辑 解决我的总体思路是在jQuery的效果彰显的形式:http://jsfiddle.net/sZdre/1/ 不过,还是想弄清楚,为何迟迟不能正常工作像它应该..

回答

0

这是非常晚,因为我发现这个帖子寻找别的东西。

如果您仍然在处理此问题并遇到问题,则应该查看队列。 removeClass不是队列的一部分,您需要将其添加到队列中以使延迟工作,否则它只会在不等待特定时间的情况下删除该类。

$(document.body).click(function() { 
    $("div").show("slow"); 
    $("div").animate({left:'+=200'},2000); 
    $("div").queue(function() { 
    $(this).addClass("newcolor"); 
    $(this).dequeue(); 
    }); 
    $("div").animate({left:'-=200'},500); 
    $("div").queue(function() { 
    $(this).removeClass("newcolor"); 
    $(this).dequeue(); 
    }); 
    $("div").slideUp(); 
}); 

这个例子对我最有意义。我希望这可以帮助你,因为我目前正在解决类似的问题,并且几分钟前我已经解决了这样的问题:)

+0

从技术上讲,您的答案是正确的,所以我换了它。我目前也使用'queue()'。 –

1

延迟非常少接近不明显用肉眼尝试

.delay(2000) 

2000 = 2 seconds

duration: An integer indicating the number of milliseconds to delay execution of 
      the next item in the queue. 

jquery delay

更新

$(".listtable_up, .listtable_down").click(function() { 
    var row = $(this).parents("tr:first"); 
    if ($(this).is(".listtable_up")) { 
     row.insertBefore(row.prev()).delay(200).removeClass('cell_rollover'); 
    } else { 
     row.insertAfter(row.next()).delay(200).removeClass('cell_rollover'); 
    }   
}); 
+0

尝试过,即使是1000或10000也是如此 - 同样的问题。 –

+0

@Kalle H.Väravas不要使用整数值周围的引号 – Rafay

+0

我也试过,没有什么区别。 –