Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 鼠标滚轮事件在IE中不起作用?_Javascript_Jquery_Mouseevent_Mousewheel - Fatal编程技术网

Javascript 鼠标滚轮事件在IE中不起作用?

Javascript 鼠标滚轮事件在IE中不起作用?,javascript,jquery,mouseevent,mousewheel,Javascript,Jquery,Mouseevent,Mousewheel,我正在尝试使用滚轮水平移动页面。我在Chrome上获得了成功,但当我尝试在IE上运行它时,它不起作用 然后我在msdn网站上读到event.wheeldta用于获取鼠标滚轮绕y轴旋转的距离。 但是当我看到日志的控制台窗口时,它也会显示undefined。 console.log(event.wheelDelta) 这是我的Java脚本 $(document).ready(function () { function extractDelta(e) {

我正在尝试使用滚轮水平移动页面。我在Chrome上获得了成功,但当我尝试在IE上运行它时,它不起作用

然后我在msdn网站上读到event.wheeldta用于获取鼠标滚轮绕y轴旋转的距离。 但是当我看到日志的控制台窗口时,它也会显示undefined。 console.log(event.wheelDelta)

这是我的Java脚本

     $(document).ready(function () {

        function extractDelta(e) {
            console.log(e.wheelDelta); 

            if (e.wheelDelta) {
                return e.wheelDelta;
            }

            if (e.originalEvent.detail) {
                return e.originalEvent.detail * -40;
            }

            if (e.originalEvent && e.originalEvent.wheelDelta) {
                return e.originalEvent.wheelDelta;
            }
        }

        $(window).on("DOMMouseScroll wheel", function (event) {
            var delta = extractDelta(event);
            var $this = $(this);
            //debugger;
            //var delta = event.detail < 0 || event.originalEvent.wheelDelta > 0 ? 1 : -1;
            console.log(delta);
            if (delta > 0) {
                $this.scrollLeft(($this.scrollLeft() - 400));
            } else {
                $this.scrollLeft(($this.scrollLeft() + 400));
            }

            //this.scrollLeft -= (this.scrollLeft + 500);

            event.stopPropagation();
            event.preventDefault();

        });
$(文档).ready(函数(){
函数delta(e){
控制台日志(e.wheelDelta);
如果(e.车轮三角洲){
返回e.wheelDelta;
}
如果(如原始事件细节){
返回e.originalEvent.detail*-40;
}
if(e.originalEvent和e.originalEvent.wheelDelta){
返回e.originalEvent.wheelDelta;
}
}
$(窗口).on(“DOMMouseScroll滚轮”,函数(事件){
var delta=提取delta(事件);
var$this=$(this);
//调试器;
//var delta=event.detail<0 | | event.originalEvent.wheeldta>0?1:-1;
控制台日志(增量);
如果(增量>0){
$this.scrollLeft($this.scrollLeft()-400));
}否则{
$this.scrollLeft($this.scrollLeft()+400));
}
//this.scrollLeft-=(this.scrollLeft+500);
event.stopPropagation();
event.preventDefault();
});

请任何人解释一下为什么这在IE上不起作用。我使用的是IE 11和jQuery 2.0.3以及jQuery鼠标滚轮3.0.4。

jQuery不会传递IE事件对象。如果你想要MS特定属性,你必须使用
addeventlistener
而不是
上传递IE事件对象。如果您想要MS特定的属性,您必须使用
addeventlistener
而不是
上的

尝试使用jQuery的
bind
功能:

$(window).bind("DOMMouseScroll wheel", function (event) {
  // Code goes here
});

尝试使用jQuery的
bind
函数:

$(window).bind("DOMMouseScroll wheel", function (event) {
  // Code goes here
});