2011-06-23 71 views
1

使用jQuery UI創建一個替代選擇項,顯示爲具有三千個元素的層次結構。在Google Chrome瀏覽器和其他WebKit瀏覽器中單擊事件處理程序緩慢

基本上,使用jQuery 1.6.1,從jQuery用戶界面加上CSS來

<style type="text/css"> 
    .selectable, 
    .selectable li 
    { 
     moz-user-select: none; 
     -khtml-user-select: none; 
     -webkit-user-select: none; 
     user-select: none; 
    } 
</style> 
<script type="text/javascript"> 
    $(function() { 
     $('.seletable li').click(function() { alert('hullo') }); 
    }); 
</script> 

體內

<ol class="seletable"> 
    <li style="margin-left: {calculated according to the current level in hierarchy}">...</li> 
    ... 
</ol> 

有序列表當然會具有3K +列表元素。

當加載頁面並單擊和元素時,警告框在Google Chrome和其他WebKit瀏覽器(如Safari)中顯着延遲一秒或兩秒,但在其他瀏覽器(如IE,Firefox和Opera) 。

+0

沒關係,是與 -webkit-用戶選擇:無; 使用 代替WebKit瀏覽器。 謝謝。 – Benjamin

回答

1

您是否將.click()事件分配給同一個<ol>中的3000多個元素?

我希望情況並非如此,因爲您只需要給<ol>發一個點擊事件並停下來,找到每次產生事件的人。如果你這樣做,那可能也是導致經濟放緩的原因。特別是在IE中,許多事件監聽器都被殺死。

喜歡的東西

$('<ol>').click(function(e) { 

    // Here, e.target gives you the real element who was clicked 

}); 
+0

好主意。已經嘗試過這兩種方式,並同意你的解決方案是最好的表現。最後,它刪除了-webkit-user-select:沒有解決這個問題。因爲即使在單個元素上註冊點擊處理程序也會導致同樣的問題。必須是WebKit的東西。 – Benjamin