2011-01-27 50 views
11

我最近discovered說的liveQuery的jQuery插件可能是相當浪費的,因爲它不使用事件代表團但是結合每個變化都綁定事件,並重新檢查整個DOM的liveQuery性能

如果任何人有更多的關於使用livequery和.live()的最佳實踐的信息或建議,我將非常感謝

+1

正如下面「patrick dw」的答案所指出的那樣,.live()和.delegate()幾乎是同一作者的livequery到核心的集成 - 請參閱他的博客:http:// brandonaaron。網絡/博客至少據我瞭解:) – 2011-01-27 16:23:54

回答

11

很少有您真的需要像livequery這樣的插件。可能唯一一次你真正需要的是,如果你需要對由其他jQuery代碼所做的DOM更改做出反應,那麼不能修改

雖然.live()不使用事件委託,但它確實是在document水平,這意味着它需要處理頁面上的所有事件,以查看它們是否匹配各事件類型提供選擇。

這兩個方法都是更好的選擇(IMO),它使用的事件委託類似.live(),但可以將其限制爲頁面的特定部分。

$('#someContainer').delegate('a.someButton', 'click', function() { 
    // do something when an "a.someButton" inside "#someContainer" is clicked 
}); 

請注意,事件委託方法響應瀏覽器事件,而不是更改DOM。如果您需要根據對所做DOM的更改運行一些代碼,則需要在將該更改更改爲DOM時運行代碼

+3

+1,對我來說很有意義:http://brandonaaron.net/blog更多關於授權。 – 2011-01-27 15:43:07