標籤:函數名 利用 事件監聽 ... 函數 事件處理 line round live
目前已知有:
$("..").bind("事件名",fn);
$("parent").on("事件名","selector",fn);
$("..").one("事件名",fn);
DOM:addEvenetlistener("事件名",fn);
removeEvenetListener("事件名",函數名);
強調:要想移除事件監聽,必須使用有名函數
綁定事件監聽,如果添加事件時使用匿名函數
則不可能移除.
$("select").live("事件名",fn);
$(document).delegate("select","事件",fn);
$("selector").die("事件名");
其中 後三種 live、delegate、die,由於其本身的效能問題,已廢棄,不再討論,盡討論前三種:
1:bind
bind通常都是是每個子項目都添加事件監聽,且僅對現有元素添加綁定,無法自動給動態產生元素添加綁定
a:
$("...").bind("事件名",fn);
$("...").bind("事件名1 事件名2 ",fn);
b:事件對象
$("..").bind("事件名",function(e){
e==事件對象
e.preventDefault();
});
$("..").unbind("事件名",函數名); 解除綁定
$("..").unbind(); 移動該元素上所有事件綁定
2:on
on() 為指定的元素,添加一個或多個事件處理常式,並規定當這些事件發生時啟動並執行函數。使用 on() 方法的事件處理程式適用於當前或未來的元素(比如由指令碼建立的新元素)。
off()函數主要用於解除由on()函數綁定的事件處理函數。
3:one
$("..").one("事件名",fn);綁定事件,僅觸發一次後自動觸綁定,只能對當前頁面上己存在的元素添加事件綁定.動態產生元素無法自動綁定事件.
實現動態綁定的方法:
解決1:利用冒泡,將事件綁定己存在父元素一次
function(e){var target = e.target;//target 觸發事件:元素}
解決2:事件代理
$("parent").delegate("subselector","事件名",fn);
fn-->this--->代替 e.target
解除
$("parent").undelegate("subselector","事件名");
jQuery 綁定事件總結