2011-07-23 65 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

我也試過,沒有什麼區別。 –