1
因此,我使用事件冒泡来捕获子DOM事件...我将点击事件附加到div
包装器,并附加单击事件到包装的孩子......像这样:无法将属性分配给Internet Explorer中的window.event(或数据属性)
<div onclick="foo();">
<div onclick="bar();">
Hello World!
</div>
</div>
function foo() {
alert(window.event.abc.one);
};
function bar() {
window.event.abc = {one: "23"};
};
正如你所看到的,我指定一个自定义对象abc
。我使用这种方式发送消息来点击处理链上的处理程序......并避免在每个子元素上使用闭包。在其他浏览器中,您可以将任何您喜欢的内容指定给event
对象......并且这种方式非常有效。
但是(当然),这在IE中不起作用。我尝试在事件对象上使用“data”属性,但这只允许字符串。
任何其他方式我可以完成相同的功能,而无需在每个子对象上使用闭包?
也许你可以在'document.onclick'上分配'msg = {}'。然后,您不需要知道哪个事件处理程序触发器(如果有多个图层)。 – 2011-04-05 01:15:06
@ Box9干杯,我可能只是用'{}'来定义它(我错过了什么)? – alex 2011-04-05 01:18:15
不完全是我的意思,尽管我只是猜测OP想要什么。我想象着一系列事件处理程序,每个事件处理程序都会向事件添加数据,因为它会起泡,而不仅仅是一个。如果有'bar'元素的子元素,那么在'bar'中分配一个新对象将会替换由子元素添加的任何值。不是初始化最低元素处的msg对象,你可以先初始化它,然后在它起泡到“文档”时重置它,为下一个事件做好准备。 – 2011-04-05 01:24:53