2012-04-24 42 views
4

我有這個函數,當光標經過並聚焦於每個tr的點擊時,我使用這個函數來爲兩行中顯示的兩行表中的每行進行懸停和聚焦。 它工作得很好,但我有一個與IE瀏覽器的問題,因爲正在放緩,我不明白爲什麼。任何人都可以告訴我如何提高此功能的性能?在IE上的jQuery函數性能

檢查活生生的例子:http://mainpage.ueuo.com/

function rowSelection(){ 
     var rows = $('.interactive tr'); 
     rows.click(function() { 
      var i = $(this).GetIndex() + 1; // nth-child is 1-based 
      rows.removeClass('selectedRow'); 
      rows.filter(':nth-child(' + i + ')').addClass('selectedRow'); 
     }); 
     rows.hover(function(){ 
      var i = $(this).GetIndex() + 1; 
      rows.filter(':nth-child(' + i + ')').addClass('hoverx'); 
     },function(){   
      rows.removeClass('hoverx'); 
     }); 
    }; 

jQuery.fn.GetIndex = function(){ 
    return $(this).parent().children().index($(this)); 
} 

謝謝。

回答

0

試試這個

$(document).ready(function(){ 

$(".interactive tr").hover(function() { 
    $(this).addClass("hoverx"); 
    }, function() { 
    $(this).removeClass("hoverx"); 
    }); 

$(".interactive tr").click(function() { 
    $(".interactive tr.selectedRow").removeClass("selectedRow"); 
    $(this).addClass("selectedRow"); 
    });​ 
}); 
+0

不錯,但不能在兩張桌子上工作,我有兩張桌子顯示在我使用我的功能。懸停和聚焦它在每個行的兩個表上同時工作。檢查您的功能的實例(並嘗試添加小提琴我的功能看到正確的行爲):http://jsfiddle.net/Ksb2W/41/ – RulerNature 2012-04-24 09:04:17

+0

看到我編輯的答案或訪問http://jsfiddle.net/dharmesh_guna/Ksb2W/43/ – Dharmesh 2012-04-24 09:33:08

+0

僅適用於第一個表格,請參閱活動示例以瞭解其如何在同一時間在兩個表格上進行操作(懸停和焦點),在您的小提琴示例中它只能在第一個表格上工作。 – RulerNature 2012-04-24 10:17:02

1

你能不能使用基於CSS的懸停呢?這在所有瀏覽器中都會表現更好,特別是IE。

.interactive tr:hover td { 
    background: lime !important; 
} 

如果你想堅持用JavaScript/jQuery的,那麼我建議你擺脫這樣的:

<meta http-equiv="X-UA-Compatible" content="IE=8"> 

這就迫使IE使用IE8模式。 IE8模式比IE9模式慢。

+0

但懸停在TR不能在IE6工作 – Dharmesh 2012-04-24 08:58:48

+1

@Dharmesh:如果需要IE6的支持,他可以使用(一些改進)的JavaScript來做到這一點,但*只*用於IE6。爲什麼要讓所有瀏覽器的「慢」版本,只是爲了迎合過時的蒸氣堆,即IE6? – thirtydot 2012-04-24 09:02:30

+0

只適用於ie 8-9 – RulerNature 2012-04-24 09:05:49