我有一个像这样的事件处理程序注册代码
$("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。答案 0 :(得分:2)
答案 1 :(得分:0)
您应该在创建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。
希望这会有所帮助。 干杯