2011-08-16 48 views
0


希望我的標題不要太混亂。請讓我知道是否有更好的方式來標題我的問題。
我有jQuery函數將背景顏色應用於表格中的奇數行,並將懸停狀態更改爲紅色。但是,如果我動態編輯表,我的jQuery不再工作。
我讀了很多關於JS事件委派,但沒有找到有關如何使這項工作的任何信息,而無需實際發生的事件......沒有實際事件的JavaScript事件代理?

$(document).ready(function(){ 
    //add background-color to all odd rows 
    //very important!!! 
    $("#tab3 tbody tr:odd").css("background-color", "#DCF1FD"); 
    //change color on hover 
    //less important!!!  
    $("#tab3 tbody tr").hover(
     function() { 
     $(this).css("color", "red"); 
     }, 
     function() { 
     $(this).css("color", "#000"); 
     } 
    ); 
}); 

有沒有辦法讓我以後編輯表它的工作。

編輯:
這必須在IE8工作

回答

1

使用桌子上的jQuery delegate,如果你因爲事件被連接到桌上,而不是各行其動態更新表中的行會甚至工作。

$(document).ready(function(){ 
    $("#tab3 tbody tr:odd").css("background-color", "#DCF1FD"); 


    $("#tab3").delegate('tbody tr', 'hover', function(){ 
     $(this).css("color", "red"); 
     }, 
     function() { 
     $(this).css("color", "#000"); 
    }); 
}); 

如果要更新整個表動態然後用這個

$(document).delegate('#tab3 tbody tr', 'hover', function(){ 
     $(this).css("color", "red"); 
     }, 
     function() { 
     $(this).css("color", "#000"); 
}); 

您可以設置奇數行的背景顏色與簡單的CSS

#tab3 tbody tr:nth-child(odd) 
{ 
    background: #DCF1FD; 
} 
+0

我明白,但奇數行的背景色呢? – Radi

+0

它可以很容易地通過CSS類控制 – ShankarSangoli

+0

檢查我編輯的答案我已經添加了行背景顏色所需的樣式。 – ShankarSangoli

0

...或者你可以只需使用CSS爲偶數行,奇數行和懸停狀態定義背景。 Se this question的第一個答案。 (編輯:固定鏈接,它指向錯誤的SO線程)。

+0

它在IE 7+中工作 – Radi

+0

不,根據[此表](http://msdn.microsoft.com/en-us/library/cc351024(v = vs.85).aspx)甚至沒有IE9。 :( – bfavaretto

+0

對不起,我鏈接了錯誤的SO文章,編輯鏈接,我的意思是實際上是':nth-​​child(even)'和':n-child(odd)'。 – bfavaretto