2009-12-11 55 views
0

我指定了以下的jQuery代碼複選框時:jQuery的複選框直播點擊事件擁堵的Firefox其實點擊

$('#firstbox ul.checkboxlist input[type="checkbox"]').live('click',function(){ 
    $(this).parents('li').remove().clone().prependTo('#secondbox ul.checkboxlist').animate({backgroundColor: '#FAEA96'},100, function(){$(this).animate({backgroundColor: '#FFFFFF'},800);}); 
}); 

它以李,刪除它,當你點擊複選框將其放入第二個盒子。在IE中正常工作。如果我點擊標籤上的文字,它也可以正常工作。但是,如果我直接點擊Firefox中的複選框,火狐慢降權約10/15秒,並記錄這些錯誤:

警告:預期數字或RGB百分比(),但發現「男」。解析'background-color'的值時出錯。聲明下降了。 行:0

Firebug返回太多的遞歸。

爲什麼點擊標籤時點擊實際複選框會有所不同?

+0

你不是應該使用'.parent( '禮')'代替'。家長( '禮') ' – Mottie 2009-12-11 13:52:04

+0

這不是一個直接父母,它需要通過多個父母來查找li :) – Joel 2009-12-11 15:32:42

+0

如果列表嵌套,您可能想要嘗試使用最接近的('li')來獲取第一個li。 – tvanfosson 2009-12-11 16:17:51

回答

1

您使用的是jQuery UI嗎?如果你想爲背景顏色設置動畫效果,至少需要使用核心效果。另外,你有沒有嘗試過,而不使用克隆()?既然你要從前面的列表中刪除元素,你不需要克隆它們。你也可以嘗試使用highlight()效果 - 這似乎是你在做什麼。

這些問題都沒有解決您爲什麼FF會以不同方式處理它的確切問題,但希望其中一個人能夠解決問題。

+0

我沒有使用UI,我已經包含了jquery顏色插件,以允許.animate使用顏色。除了點擊複選框之外,它可以起到一種治療作用。 – Joel 2009-12-11 15:32:04

+0

您是否想過簡單地獲取jQuery UI的核心和效果部分,並查看是否可以解決您的問題?我對顏色插件一無所知,但UI代碼被廣泛使用並且可能更加健壯。 – tvanfosson 2009-12-11 16:18:53

0

根據方法「刪除」的jQuery文檔不需要此方法,如果您使用課程「appendTo」或其他方法。 我寧願不需要使用「克隆」,在我看來,代碼可以是這種方式,並在某些時候,我有雙引號和單引號("input[type='checkbox']")的問題,因爲我用這種方式使用引號。

info for remove()

$("#firstbox ul.checkboxlist").find("input[type='checkbox']").live("click",function(){ 

    $(this) 
     .parents("li") 
     .prependTo("#secondbox ul.checkboxlist") 
     .animate({backgroundColor: "#FAEA96"},100, function(){ 
      $(this).animate({backgroundColor: "#FFFFFF"}, 800); 
     }); 

}); 

編輯: 爲remove事件單擊

$("#firstbox ul.checkboxlist").find("input[type='checkbox']").live("click",function myEventClick(){ 

    $(this) 
     .unbind("click", myEventClick) 
     .parents("li") 
     .prependTo("#secondbox ul.checkboxlist") 
     .animate({backgroundColor: "#FAEA96"},100, function(){ 
      $(this).animate({backgroundColor: "#FFFFFF"}, 800); 
     }); 

}); 
+1

如果您想確保任何事件處理程序也被刪除,您可能想使用remove()**。僅使用prependTo()將導致處理程序被保留。在這種情況下,它可能是一個爭議點,因爲我們知道的唯一處理程序是文檔上的活動處理程序,而不是元素本身。 – tvanfosson 2009-12-11 14:50:46

+0

謝謝你們,我會玩這個。我其實已經決定'隱藏'複選框,以至於它們甚至不能被點擊。不過,如果我能更好地清除東西。 – Joel 2009-12-11 15:33:40