为什么jquery没有封装鼠标滚轮事件?

最近在学jquery,我发现jquery好像并没有对滚轮事件进行封装,如果想使用的话需要自己写兼容或者使用mousewheel插件,我觉得这并不方便,而且这个事件也会经常使用,为什么jquery不封装进去呢?

阅读 5k
2 个回答

如果你问的是为什么jquery不封装进去呢?,那我回答不了你
而如果是对鼠标滚轮事件有疑问的,可以参考这里
你是真的在抱怨jquery做得不够好的话,我建议你自己写一个jquery的插件实现鼠标滚轮事件的绑定

jQuery的scroll只针对有滚动条的,自定义的滚动条得自己写。用jQuery绑定DOMMouseScroll或mousewheel,发现wheelDelta和Detail两个重要属性不见了,然后还得自己写绑定函数

var EventInit = {
//绑定事件
addEvent: function (obj, type, fn) {
    var handler = fn;
    if (obj.addEventListener) { //ff 
        obj.addEventListener(type, handler, false);
    }
    else if (obj.attachEvent) {  //ie
        handler = function (e) {
            fn.call(obj, e);//IE中有时 this变成了window。所有需要改变作用域链
        };
        obj.attachEvent('on' + type, handler);
    }
},
//解除绑定
delEvent: function (obj, type, fn) {
    var handler = fn;
    if (obj.removeEventListener) {
        obj.removeEventListener(type, fn, false);
    }
    else {
        if (obj.detachEvent) {
            handler = function (e) {
                fn.call(obj, e);
            }
            console.log("detachEvent ??");
            obj.detachEvent('on' + type, handler);
        }
    }
}};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏