我的活动在所有事情上都很棒!@#$ IE。我发现我需要调用fireEvent('event');
函数,但我不知道在哪里放它。从我之前提出的一个问题中提取出来,这就是我说的地方吗?
$('field').addEvents ({
'focus' : function() {
this.fireEvent('focus');
// do some stuff
}
'blur' : function() {
this.fireEvent('blur');
// do other stuff
}}
});
因为如果是......其他的东西是错的,因为我试过了它并不值得一个修补匠该死的。
我们可以直接告诉人们“访问被拒绝。你使用的是一个迟钝的浏览器。得到一个真实的,然后回来。”?为什么不能匿名瞄准IE开发团队? :P
反正。 TIA。
WR!
答案 0 :(得分:2)
你在这里所拥有的是多余的,实际上会导致无限循环。它本质上是一个自我调用的功能。现代JIT compilers可能会去,' oups,你可能不是故意这样做的。并打破循环,但IE7 / 8可能只是按照书面运行它。
基本上,addEvent
添加的回调与本机事件触发后的回调之间存在差异,并且手动触发回调(fireEvent
)。
稍后 - 如果你做$("field").fireEvent("focus")
- 它将只运行绑定函数中的代码。它实际上并没有专注于这个领域。原生$("field").focus();
将同时执行。
使用fireEvent
时的一个警告是当你的回调尝试对事件本身做事时。例如,在此代码中:
el.addEvent("click", function(e) {
e.stop();
// do something
});
// later...
el.fireEvent("click"); // exception as e is not defined and stop is not a function
要解决此问题,您需要检查参数e
是否已定义以及是否在回调中定义了stop:
el.addEvent("click", function(e) {
e && e.stop && e.stop();
// do something
});
或者你可以将一个虚拟对象传递给fireEvent:
el.fireEvent("click", {
stop: Function.from
});
甚至......
el.fireEvent("click", new DOMEvent()); // 1.4+, new Event() before....
不确定这是否有帮助,因为你的“问题”中有很多过剩的问题。但它可能会让您了解事件的使用方式。
玩得开心