用法
.live( events, handler ) => jQuery
.live( events, handler ) => jQuery
說明:為現在和將來匹配當前選擇器的所有元素附加一個事件處理程序。
-
添加的版本:1.3
.live( events, handler )
-
events類型:String包含 JavaScript 事件類型的字符串,例如 "click" 或 "keydown." 從 jQuery 1.4 開始,該字符串可以包含多個以空格分隔的事件類型或自定義事件名稱。
-
handler觸發事件時執行的函數。
-
-
添加的版本:1.4
.live( events [, data ], handler )
-
events類型:String包含 JavaScript 事件類型的字符串,例如 "click" 或 "keydown." 從 jQuery 1.4 開始,該字符串可以包含多個以空格分隔的事件類型或自定義事件名稱。
-
data類型:PlainObject包含將傳遞給事件處理程序的數據的對象。
-
handler觸發事件時執行的函數。
-
-
添加的版本:1.4.3
.live( events )
-
events類型:PlainObject一個或多個 JavaScript 事件類型和為它們執行的函數的普通對象。
-
注意:這個 API 在 jQuery 1.9 中已經被移除;請改用
。on()
此方法提供了一種將委托事件處理程序附加到頁麵的document
元素的方法,這在將內容動態添加到頁麵時簡化了事件處理程序的使用。有關詳細信息,請參閱
方法中對直接事件與委托事件的討論。.on()
根據其後繼方法重寫.live()
方法很簡單;這些是對所有三種事件附件方法進行等效調用的模板:
|
events
參數可以是用空格分隔的事件類型名稱和可選名稱空間列表,也可以是事件名稱字符串和處理程序的對象。 data
參數是可選的,可以省略。例如,以下三個方法調用在函數上是等效的(但請參閱下麵的附加委托事件處理程序的更有效和高性能的方法):
|
不再推薦使用.live()
方法,因為更高版本的 jQuery 提供了更好的方法而沒有其缺點。特別是,使用 .live()
會出現以下問題:
- jQuery 在調用
.live()
方法之前嘗試檢索選擇器指定的元素,在大型文檔上可能是 time-consuming。 - 不支持鏈接方法。例如,
$( "a" ).find( ".offsite, .external" ).live( ... );
是not
有效且無法按預期工作。 - 由於所有
.live()
事件都附加在document
元素上,因此事件在處理之前會采用最長和最慢的路徑。 - 在移動 iOS(iPhone、iPad 和 iPod Touch)上
click
對於大多數元素,事件不會冒泡到文檔正文,並且不能與.live()
不應用以下解決方法之一:- 使用本機可點擊元素,例如
a
或button
,因為它們都會冒泡到document
。 - 使用
.on()
或.delegate()
附加到document.body
級別以下的元素,因為移動 iOS 確實在體內冒泡。 - 將 CSS 樣式
cursor:pointer
應用於需要冒泡點擊的元素(或包含document.documentElement
的父元素)。但是請注意,這將禁用元素上的複製\粘貼,並使其在觸摸時突出顯示。
- 使用本機可點擊元素,例如
- 在事件處理程序中調用
event.stopPropagation()
document
。 .live()
方法以令人驚訝的方式與其他事件方法交互,例如,$( document ).off( "click" )
刪除通過對.live()
的任何調用附加的所有點擊處理程序!
對於仍在使用 .live()
的頁麵,此 version-specific 差異列表可能會有所幫助:
- 在 jQuery 1.7 之前,要在使用
.live()
綁定後停止進一步的處理程序執行,處理程序必須返回false
。調用.stopPropagation()
不會完成此操作。 - 作為jQuery 1.4
.live()
方法支持自定義事件以及all JavaScript events that bubble
.它還支持某些不會冒泡的事件,包括change
,submit
,focus
和blur
. - 在jQuery 1.3.x隻能綁定以下 JavaScript 事件:
click
,dblclick
,keydown
,keypress
,keyup
,mousedown
,mousemove
,mouseout
,mouseover
, 和mouseup
.
例子:
取消默認操作並通過返回 false 來防止它冒泡。
|
使用 preventDefault 方法僅取消默認操作。
|
使用 .live() 綁定自定義事件。
|
使用一個對象綁定多個實時事件處理程序。請注意,.live() 為所有段落(甚至是新段落)調用 click、mouseover 和 mouseout 事件處理程序。
|
相關用法
- JQuery .load()用法及代碼示例
- JQuery UI .labels()用法及代碼示例
- JQuery .length用法及代碼示例
- JQuery .last()用法及代碼示例
- JQuery .jquery用法及代碼示例
- JQuery .scroll()用法及代碼示例
- JQuery .add()用法及代碼示例
- JQuery .contextmenu()用法及代碼示例
- JQuery .undelegate()用法及代碼示例
- JQuery .contents()用法及代碼示例
- JQuery .empty()用法及代碼示例
- JQuery UI .addClass()用法及代碼示例
- JQuery .click()用法及代碼示例
- JQuery UI .toggleClass()用法及代碼示例
- JQuery .removeAttr()用法及代碼示例
- JQuery .addClass()用法及代碼示例
- JQuery UI .cssClip()用法及代碼示例
- JQuery .next()用法及代碼示例
- JQuery UI .hide()用法及代碼示例
- JQuery .promise()用法及代碼示例
- JQuery .trigger()用法及代碼示例
- JQuery .mouseenter()用法及代碼示例
- JQuery .slideDown()用法及代碼示例
- JQuery UI .show()用法及代碼示例
- JQuery .wrapAll()用法及代碼示例
注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 .live()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。