簡體   English   中英

動態元素上的Jquery事件注冊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM