我有一个简单的脚本来更改cms的页面顺序。它基于使用jQuery重新排序表行。现在的问题是,我想要延迟从整行中删除高亮类。它会忽略delay()并立即将其删除。
这个想法是,当你将鼠标悬停在一行上时,它会向其添加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');
});
注意:使用jQuery脚本将cell_rover类添加到行中:
$(".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 :(得分:1)
用肉眼尝试延迟非常接近无法察觉
.delay(2000)
2000 = 2 seconds
duration: An integer indicating the number of milliseconds to delay execution of
the next item in the queue.
<强>更新强>
$(".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');
}
});
答案 1 :(得分:0)
所以最初的想法是突出显示刚重新排序的行:http://jsfiddle.net/sZdre/1/
延迟错误尚未弄明白......
答案 2 :(得分: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();
});
这个例子对我来说最有意义。我希望这可以帮助你,因为我目前正在解决类似的问题,几分钟前我已经解决了这个问题:)
答案 3 :(得分:0)
使用window.setInterval()
$element.addClass('cell_rollover');
window.setTimeout(() => $element.removeClass('cell_rollover'), 500);
window.setTimeout(() => $element.addClass('cell_rollover'), 1000);
window.setTimeout(() => $element.removeClass('cell_rollover'), 1500);
我认为delay()
无效,因为您可能使用tablesorter.jquery.js
。如果是这种情况,tablesorter具有覆盖jQuery delay()
方法的名为delay()
的方法。