如何制作通过ajax加载的元素,在mootools 1.11上采用与同一类关联的事件?
据我所知,在jQquery中,如果您的ajax响应包含<div class='button'>
之类的内容,则如果使用live
到$('.button')
进行事件绑定,则事件会自动绑定。
MooTools 1.11可以实现吗?
答案 0 :(得分:7)
也许这样的事情可能会做你想要的事情?虽然我不确定它是否适用于1.11。
Element.implement({
addLiveEvent: function(event, selector, fn){
this.addEvent(event, function(e){
var t = $(e.target);
if (!t.match(selector)) return false;
fn.apply(t, [e]);
}.bindWithEvent(this, selector, fn));
}
});
$(document.body).addLiveEvent('click', 'a', function(e){ alert('This is a live event'); });
答案 1 :(得分:1)
anomareh走在正确的轨道上。
您还需要检查事件目标的祖先元素。
我不确定这是否适用于所有事件,因为它们中的一些不会冒泡(不确定Mootools如何处理这个)。
答案 2 :(得分:1)
这是一个非常酷的想法,jQuery .live()
以类似的方式工作,但冒泡也存在问题。
如果某位家长已为此事件附加stopPropagation()
,则不会发生任何事情。
我认为理想的解决方案是构建自定义事件,这里有关于Nicholas Zakas编写的自定义事件的非常好的帖子:
http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/
但是这个例子还没有实现事件冒泡。 某种鼓泡有其后备因素可以解决这个问题。
答案 3 :(得分:1)
您可以这样使用:
$(document.body).addEvent('click:relay(.filterButton)', function(){
// do something
});