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元素