前幾天寫套件的時候,不小心犯了一個綁定事件的錯誤
因為我寫的套件,都是以widget會很多的狀況來寫。
所以綁定事件的時候,通常有兩個方式
第一種 :
每一個widget內的事件綁定,利用元素直接綁定
var ele$ = $('<div>')
.appendTo('body') ;
ele$.click(function(){ }) ;
如果元素的產生跟事件的綁定 不是連著作
那也可以利用ID選擇器來綁定
var ele$ = $('<div>')
.attr('id', xxx)
.appendTo('body') ;
//---遙遠的距離---
$('#xxx').click(function(){ }) ;
其實套件寫久就知道
這樣取ID綁事件,頭腦容易打結,所以我通常用第二種偷吃步的方式
第二種 :
$(document)
.on('click', class, function() {}) ;
第二種程式碼的好處是
只要執行一次就可以,不用每次物件生成的時候
還要跑一段綁事件的程式碼
而且,有時候使用套件的人會不管三七二十一直接複製你的元素來利用
這樣一來,被複製的widget就會沒有綁到事件
所以用第二種方式來綁,真的比較有效率
不過要記住喔,1.7之後才有支援這樣的寫法~