我有这个HTML:
<textarea class="question" onBlur="onBlurFun(event); return true;"
name="aaa" id="bbb"></textarea>
JavaScript中的这个功能
onBlurFun = function(event) {
var tgt = $(event.target);
alert(tgt.attr('id'));
}
在IE中,tgt
未正确设置。我该怎么做才能访问调用节点?
答案 0 :(得分:2)
event.srcElement 是Internet Explorer的等效于 event.target 。 jQuery在使用 .bind()应用的事件处理程序中为您规范化了这一点,因此您可以在Internet Explorer中使用 event.target ,但是通过HTML属性或DOM应用事件处理程序物业将不具备该物业。在您的情况下,您可以将代码更改为
// event.target or event.srcElement
var tgt = $(event.target || event.srcElement);
或关注June R's advice并传入对该元素的引用。
作为旁注,大多数事件都不需要return true;
,尤其是 onblur 和 onfocus ,因为您无法取消默认设置无论如何,他们的行动。
答案 1 :(得分:1)
要检查目标不传递事件而不是传递对象本身,如
查看此代码
<textarea class="question" onBlur="onBlurFun(this); return true;"
name="aaa" id="bbb"></textarea>
function onBlurFun(obj)
{
alert(obj.id);
}
答案 2 :(得分:0)
IE有自己的全局事件对象。
这应该有效
onBlurFun = function(event) {
if (!event)
{
event = window.event;
event.target = event.srcElement;
}
var tgt = $(event.target);
alert(tgt.attr('id'));
}