亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuerylive()與委托()

jQuerylive()與委托()

jQuerylive()與委托()我在這里和網上其他地方讀到了一些關于live()和delegate()..然而,我沒有找到我正在尋找的答案(如果這是一個欺騙,請告訴我)。我知道live和delegate那是live不能在鏈中使用。我還在某個地方讀到delegate在某些情況下更快(更好的性能)。我的問題是,有什么情況你應該用live而不是delegate?更新我已經設置了一個簡單試驗看看性能上的差異。我還增加了新的.on(),可在jQuery1.7+中找到。結果概括了答案中所述的性能問題。不要用.live()除非jQuery版本不支持.delegate().不要用.delegate()除非jQuery版本不支持.on()..之間的區別.live()和.delegate()比之間大得多delegate()和.on().
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我從不用live;我認為使用delegate如此充實以致于壓倒性。

唯一的好處是live的語法非常接近bind:

$('a.myClass').live('click', function() { ... });

delegate然而,它使用了稍微冗長的語法:

$('#containerElement').delegate('a.myClass', 'click', function() { ... });

然而,在我看來,這似乎更清楚地說明了實際發生的情況。你沒有意識到live實際捕獲的事件的示例。document;與delegate,很明顯,事件捕獲發生在#containerElement..你也可以做同樣的事live但語法變得越來越可怕。

指定要捕獲的事件的上下文也可以提高性能。帶著live例如,必須將整個文檔上的每一次單擊與選擇器進行比較。a.myClass看看是否匹配。帶著delegate,這只是內部的元素。#containerElement..這將明顯提高性能。

最后,live要求瀏覽器查找a.myClass 它現在是否存在delegate只在事件被觸發時查找元素,從而提供了進一步的性能優勢。


delegate使用live在幕后,所以你可以做任何事live你可以用它delegate..我的回答涉及它們,因為它們是常用的。

還要注意的是live也不delegate是在現代jQuery中進行事件委托的最佳方法。新語法(從jQuery1.7開始)使用on功能。語法如下:

$('#containerElement').on('click', 'a.myClass', function() { ... });


查看完整回答
反對 回復 2019-07-04
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

想到了兩種情況:

  1. 你會用delegatebody元素,所以您只需使用live而是因為它更簡單。

  2. 您需要使用jQuery庫的舊版本,其中delegate事件尚未實現。


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 386 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號