Javascript 跨浏览器事件处理程序,jQuery不工作
我打赌这很简单,但到目前为止我没有运气。我想以跨浏览器跨版本的方式添加事件处理程序。这是我的密码Javascript 跨浏览器事件处理程序,jQuery不工作,javascript,jquery,Javascript,Jquery,我打赌这很简单,但到目前为止我没有运气。我想以跨浏览器跨版本的方式添加事件处理程序。这是我的密码 if ($.browser.msie) { if ($(p)[0].addEventListener) { $(p)[0].addEventListener("mousedown", function () { OnMouseDown(); }, true); $(p)[0].addEventListener("mouseup", function () { OnMouseUp(
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没有在兼容模式下工作。为什么不直接用.bind附加事件(我看到它和旧版本的jQuery) 做一些类似于:
$(p).bind('mousedown', OnMouseDown);
$(p).bind('mouseup', OnMouseup);
$(p).bind('mouseout', OnMouseOut);
编辑:如果这不起作用,$.browser还有一个“version”属性,您可以像对待其他浏览器一样对待较新的IE。检查
无论如何,尽量不要使用与浏览器相关的代码。请看一个为您这样做的库:您尝试使用哪个版本的jquery?版本1.4.2。我想知道为什么在使用jQuery时要绑定这样的事件。或者,如果您喜欢这样绑定事件处理程序,为什么要使用jQuery。另外,$.browser已从jQuery中删除。我不明白,您已经检查了IE浏览器的第一个if条件,并且您说在else中块对于IE的较新版本工作正常,但当浏览器是另一个IE时,会调用其他浏览器。请您解释一下。$浏览器工作正常:)我想使用attachEvent,因为IE 11处于兼容模式(模仿7或8 IE,我真的不知道),jQuery不想工作唉,不工作。我想知道,attachEvent可能不起作用,因为我想通过$(“p”)[0]设置它,或者可能是因为我后来将它附加到其他dom元素,并将该元素附加到另一个dom元素