2011-07-06 49 views
3
$('.classname').live('click',function() { some code; }); 

如果一個這類約100-200或300個元素有性能問題嗎?我有一個關於實時方法的問題

+1

你有現場使用?如果你不動態添加這些元素,你可以使用$('。classname')。click(function(){some code;}); – dave

+0

'live()'和'delegate()'現在都被棄用了,在可能的地方使用'on()' – danwellman

回答

1

它很大程度上取決於{ some code }的內容唯一的辦法是設置和測試。如果性能足夠,你沒有問題。如果性能不佳,則可以在Firebug和/或Chrome/Safari開發人員工具中對其進行分析,並嘗試進一步優化綁定功能。

1

livedelegate實際上應該是提高表現爲大量元素。這當然與bind相比。如果live很慢,則幾乎可以保證bind會變差。

這樣做的原因是,delegate呼叫*存儲元素的功能,而bind調用存儲功能上元素的副本。

當您使用委託時,它將偵聽器存儲在父元素上,該父元素將捕獲該事件並在子元素的上下文中調用回調。

不要過早優化。如果您遇到問題,請嘗試將代碼分離爲可重用的塊,然後查看可以減少多少。如果你沒有問題,那有什麼問題?

* live基本上是$(document).delegate(selector,...)