我敢打赌这很简单但到目前为止我没有运气。我想以跨浏览器的跨版本方式添加事件处理程序。这是我的代码
if ($.browser.msie) {
if ($(p)[0].addEventListener) {
$(p)[0].addEventListener("mousedown", function () { OnMouseDown(); }, true);
$(p)[0].addEventListener("mouseup", function () { OnMouseUp(); }, true);
$(p)[0].addEventListener("mouseout", function () { OnMouseOut(); }, true);
} else if ($(p)[0].attachEvent) {
//ie 11 in compatibility mode hits here but not assign events (checked in developer tools(f12))
$(p)[0].attachEvent("onmousedown", function () { OnMouseDown(); });
$(p)[0].attachEvent("onmouseup", function () { OnMouseUp(); });
$(p)[0].attachEvent("onmouseout", function () { OnMouseOut(); });
}
} else {
//this works fine in newer ie and in "normal" mode
$(p).mousedown(OnMouseDown);
$(p).mouseup(OnMouseUp);
$(p).mouseout(OnMouseOut);
}
有没有人有任何想法? jQuery无法在兼容模式下工作。
答案 0 :(得分:1)
为什么不直接用.bind附加事件(我看到它的旧版jQuery)?
做类似的事情:
$(p).bind('mousedown', OnMouseDown);
$(p).bind('mouseup', OnMouseup);
$(p).bind('mouseout', OnMouseOut);
编辑:好吧,如果这不起作用,$ .browser也有一个“版本”属性,你可以像其他浏览器一样对待新IE。查看this fiddle
无论如何,尽量不要使用浏览器相关代码。看看为您做这件事的图书馆:Modernizer