jquery中绑定mousewheel遇到的那些事

闲着的时候,突然想写个视觉落差的效果。遇到倒通了一些。

前期百度找到的都是原生实现素材

1.event.type(mousewheel//ie chrome opera,DOMMouseScroll//firefox);

2.事件绑定(原生)【我是基于jquery写的直接用on代替】

3.event.wheelDelta//ie chrome opera,event.Detail//firefox

素材已经找到开始写代码,初始代码

(function(){
	 $.fn.extend({
	 	getmouseEventType:function(){
	 		var type=‘‘;
	 		if(document.mozHidden!==undefined){
	 			type="DOMMouseScroll";
	 		}else{
	 			type="mousewheel"
	 		}
	 		return type;
	 	},
    	mousewheelEvent:function(event){
    		var type = event.type;
			if (type == ‘DOMMouseScroll‘ || type == ‘mousewheel‘) {
				event.delta = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
			}
    		return event;
    	}
	});
})(jQuery)
$(window).on($.fn.getmouseEventType(),function(event){
	var event=event||window.event;
	var oEvent=$.fn.mousewheelEvent(event);
	console.log(oEvent.delta)
	//var event=$.fn.mousewheelEvent(event);

})

遇到问题,event事件触发一直有问题,于是console.log(event)的时候问题出来了。看到jquery重构了event事件,在originalEvent上保留了原生的方法。之前一直没有接触这块,所以比较迷茫。

可以清楚看到被jquery.event封装了一层皮,一般还真难发现。

修改后代码

(function(){
	 $.extend({
	 	getmouseEventType:function(){
	 		var type=‘‘;
	 		if(document.mozHidden!==undefined){
	 			type="DOMMouseScroll";
	 		}else{
	 			type="mousewheel"
	 		}
	 		return type;
	 	},
    	mousewheelEvent:function(event){
    		var event=event||window.event,
                type = event.type;
            //jquery重写了event方法 找到原生方法
            //event.originalEvent.wheelDelta--ie,chrome,opera
            //event.originalEvent.detail--firefox
            console.log(event)
			if (type == ‘DOMMouseScroll‘) {
                event.delta=-(event.originalEvent.detail || 0) / 3;
			}else if(type == ‘mousewheel‘){
                event.delta=event.originalEvent.wheelDelta / 120;

            }
    		return event;
    	}
	});
})(jQuery)
$(window).on($.getmouseEventType(),function(event){
	var oEvent=$.mousewheelEvent(event);
	console.log(oEvent.delta)

})

Good!完成,以后牢记这件事儿。

jquery中绑定mousewheel遇到的那些事

时间: 2024-10-30 00:26:42

jquery中绑定mousewheel遇到的那些事的相关文章

jQuery中绑定事件的几种方法

以click事件为例,jQuery中绑定事件有三种方法: (1)target.click(function(){}); (2)target.bind("click",function(){}); (3)target.live("click",function(){}); 第一种方法很好理解,其实就和普通JS的用法差不多,只是少了一个on而已 第二.三种方法都是绑定事件,但是二者又有很大的不同,下面着重讲解一下,因为这个如果用到Jquery的框架的话是用的挺多的,尤其

jQuery中绑定事件bind() on() live() one()的异同

jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件 bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也移除) live()--------------------------版本号小于1.7(在Jquery1.7中已经移除,相应die()也移除) delegate()-------------------版本号小于1.7(在Jquery1.7中已经移除) on()------------------

jQuery中bind函数绑定多个事件

名人名言:道德是真理之花.——雨果 在jQuery中绑定多个事件名称是,使用空格隔开,举例如下: $("#foo").bind("mouseenter mouseleave", function() { $(this).toggleClass("entered"); }); 在1.4版本以后,也可以如下绑定 $("#foo").bind({ click: function() { // do something on clic

jquery事件绑定(2)

Jquery中绑定事件有三种方法,下面是三种方式绑定 (1)element.click(function(){}); (2)element.bind("click",function(){}); (3)element.live("click",function(){}); 注意第一种方式绑定和之前的差不多,(这里节约了一个关键字on)注意API中这么写的$("p").on("click", function(){alert(

jQuery事件绑定on()、bind()与delegate() 方法详解

本文转载:啃了一段日子的js相关了,学的过程中发现在jQuery中绑定事件时,有人用bind(),有人用on(),有人用delegate(),还有人用live(),看代码的时候觉得都实现功能了也就掀过去了,只是一直没完全弄懂之间的区别,于是今天查了下资料,自己做个总结. 之所以有这么多类型的绑定方法,是因为jQuery的版本更新的原因,如on()方法就是1.7以后出现的. jQuery的事件绑定api页面上,提到live()方法已经过时,不建议使用.所以这里我们主要就看下以下三个方法:bind(

Jquery中bind和live的区别

Jquery中绑定事件有三种方法:以click事件为例 (1)target.click(function(){}); (2)target.bind("click",function(){}); (3)target.live("click",function(){}); 第一种方法很好理解,其实就和普通JS的用法差不多,只是少了一个on而已 第二.三种方法都是绑定事件,但是二者又有很大的不同,下面着重讲解一下,因为这个如果用到Jquery的框架的话是用的挺多的,尤其要

JQuery中的事件冒泡和阻止事件的传播行为

之前的这篇博客详细地介绍了javascript中的事件冒泡和事件捕获,以及DOM事件流.现在我们来看下,JQuery框架中的事件冒泡问题,以及如何阻止事件的传播行为. 1.JQuery中的事件绑定,都是属于事件冒泡. 这篇博客介绍了JQuery中绑定事件处理函数的几种方式,从中可以看到:这几种绑定方式,都不允许我们传递事件类型(是事件冒泡,还是事件捕获).而javascript原生提供的addEventListener()则允许我们设置事件的类型. <script> $(function(){

jQuery中的事件绑定方法

在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知道,不管你用的是(live/ bind / delegate)之中那个方法,最终都是jQuery底层都是调用on方法来完成最终的事件绑定;.unbind(), .die(), .undelegate(),也是一样的都是通过.off()来实现的; 因此从某种角度来讲除了在书写的方便程度及习惯上挑选,不

Jquery Mobile 中绑定事件

今天遇到了jmobile中绑定事件的问题, 参考:http://liyunpeng.iteye.com/blog/1964165 对页面中的绑定事件有了大概了解,不过这篇帖子年代久远,很多不是很详细,特此记录. 首先查到jmobile中的所有可以用.on()动态绑定的所有事件, 详情参考:http://www.runoob.com/jquerymobile/jquerymobile-ref-events.html 按以前的理解照抄,结果死活出不来效果,认真查看示例发现需要加"pageinit&q