[英]Jquery event registration on dynamic elements
我有一個像這樣的事件處理程序注冊代碼
$("sel").each(function() {
(function(a){
var b = createb();
//do some more ops
a.addEventListener('evttype',handler1(a, b),false);
b.addEventListener('evttype',handler2(a, b),false);
})(this);
});
這將偶數'eventtype'與由(“sel”)選擇的所有元素(a)綁定,並且還創建另一個元素(b)並且也綁定到它。 當然,它僅適用於靜態元素。 現在我想注冊所有動態創建的'a'。 我讀了這個live()和delegate()的兩個API。 我無法想辦法讓這項工作成功。
$('sel').delegate("a", "evttype", function(){
var b = createb();
//do some more ops
b.addEventListener('evttype',handler2(a, b),false);
});
代碼錯誤,因為每次處理事件時都會創建一個'b'。 這與第一個代碼塊不同。 我只需要創建一次元素'b',並將同一個事件綁定到它們兩個,然后分別處理它們。 是否存在基於選擇器匹配所有未來元素的接口,或者使用delegate()有一種簡單的方法。
謝謝你的時間。 BSR。
完全是為了這個目的有http://api.jquery.com/live
您應該在創建b
元素之前檢查它是否存在。
$('sel').delegate("a", "evttype", function(){
if(!b_exists()){
var b = createb();
//do some more ops
b.addEventListener('evttype',handler2(a, b),false);
}
});
但是,為了給你b_exists()
方法的邏輯,我們需要你的標記和js。
希望這可以幫助。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.