閱讀二者之使用說明,皆有( eventType, eventData, handler )模式可傳data,傳值的意義不在本文討論範圍,以下範例僅指定要處理的事件名稱(eventType)以及處理器(handler)
*範例效果—click DIV元素後會alert其text
情境1:.bind()寫在body後
.bind()寫在body後 |
執行結果-DIV之click事件抓取text並alert |
情境2:.bind()寫在body前
.bind()寫在body前 |
執行結果-DIV之click事件沒反應 |
情境3 & 4:.live()寫在body前 or 後
.live()寫在body前 |
.live()寫在body後 |
執行結果-無論前後都可觸發click |
依前述寥寥數圖可知.live()是對document所有elements作用,.bind()只對bind方法之前出現的element作用,此差異之說明文字引用官方網站如下
This method(此處只live方法) is a variation on the basic .bind() method for attaching event handlers to elements. When .bind() is called, the elements that the jQuery object refers to get the handler attached; elements that get introduced later do not, so they would require another .bind() call.
那麼這種差別有啥用處?重點在動態!!
有時候網頁元素是透過程式碼動態新增,並非一開始就設計好放在body等著被bind方法委派要使用的hanlder,此時live把元素通通抓起來的特性就派上用場,管你元素是何時生成,只要DIV被click一律都會alert(以前述範例而言)。
參考網址http://api.jquery.com/live/
沒有留言:
張貼留言