one、bind、unbind、live、delegate、on、trigger、triggerHandler區別
one:為每一個匹配元素的特定事件綁定一個一次性的事件處理函數,這個事件處理函數只會被執行一次,其他的規則與bind()相同,這個事件函數會接受到一個事件對象,可以通過他來阻止瀏覽器默認行為,如果想取消默認的行為,又想阻止事件冒泡,這個事件處理函數必須返回false。 若要刪除one()綁定的事件,請使用unbind()或是off()函數。
bind:為每個匹配元素的特定事件綁定事件處理函數。jquery3.0已棄用此方法,用on()代替。 unbind:移除被選元素的事件處理程序。jquery3.0已棄用此方法,用off()代替。
live:給所有匹配元素添加一個事件處理函數,即使這個函數是後來才添加進來的也有效。而bind()則不會。.live() 方法能對一個還沒有添加進DOM的元素有效,是由於使用了事件委托:綁定在祖先元素上的事件處理函數可以對在後代上觸發的事件作出回應。傳遞給 .live() 的事件處理函數不會綁定在元素上,而是把他作為一個特殊的事件處理函數,綁定在 DOM 樹的根節點上。jquery1.7.0已棄用此方法。
delegate:指定的元素(屬於被選元素的子元素)添加一個或多個事件處理程序,並規定當這些事件發生時運行的函數。jQuery 3.0中已棄用此方法,請用 on()代替。使用 delegate() 方法的事件處理程序適用於當前或未來的元素(比如由腳本創建的新元素)。jquery3.0已棄用此方法,用on()代替。
on:在選擇元素上綁定一個或多個事件的事件處理函數。
trigger:在每一個匹配的元素上觸發某類事件。這個函數也會導致瀏覽器同名的默認行為的執行。比如,如果用trigger()觸發一個‘submit‘,則同樣會導致瀏覽器提交表單。如果要阻止這種默認行為,應返回false。
triggerHandler:這個特別的方法將會觸發指定的事件類型上所有綁定的處理函數。但不會執行瀏覽器默認動作,也不會產生事件冒泡。 這個方法的行為表現與trigger類似,但有以下三個主要區別: * 第一,他不會觸發瀏覽器默認事件。 * 第二,只觸發jQuery對象集合中第一個元素的事件處理函數。 * 第三,這個方法的返回的是事件處理函數的返回值,而不是據有可鏈性的jQuery對象。此外,如果最開始的jQuery對象集合為空,則這個方法返回 undefined 。
註:在jquery源碼中,bing()、delegate()、one()均是由on()實現的。 unbind()、undelegate()均是由off()顯現的。
one、bind、unbind、live、delegate、on、trigger、triggerHandler區別