MooTools 也支持事件委托。这是文档中的示例:
// Adding the event, notice the :relay syntax with the selector that matches the target element inside of myElement.
// Every click on an anchor-tag inside of myElement executes this function.
myElement.addEvent('click:relay(a)', function(event, target){
event.preventDefault();
request.send({
url: target.get('href')
});
});
因此,猜测一下(我从未使用过 MooTools),我会说,如果您已将类添加myClass
到有问题的元素中:
window.addEvent('domready', function() {
$(document).addEvent('click:relay(.myClass)', function() {
// One of the elements was clicked
});
});
如果您使用的是不支持事件委托的旧版本的 MooTools,这不是问题,您可以自己做。基本上,您将事件挂在容器上(可以是document.body
,但如果可能的话,再次靠近添加元素的位置),然后在引发事件时,查看event.target
,这将告诉您事件的实际元素发生在。从 开始event.target
,检查每个父母是否有myClass
. 如果是,则处理该事件。大致如此:
$(container).addEvent('click', function(event) {
var match, elm;
for (elm = event.target; !match && elm; elm = elm.parentNode) {
if ($(elm).hasClass("myClass")) {
match = elm;
}
}
if (match) {
// Yup, its a "myClass" element -- process the click
}
});