Pagina 1 di 1

[RISOLTO][JS/JQuery] Bloccare evento scroll

Inviato: venerdì 5 giugno 2015, 23:26
da TommyB1992
Ragazzi ho questo code per scrollare solo gli elementi del div#scroll_area (che sono immagini):

Codice: Seleziona tutto

<script type="text/javascript">
/**
 * 
 * credits for this plugin go to http://brandon.aaron.sh/code/mousewheel/
 * 
 * @param {Object} up
 * @param {Object} down
 * @param {Object} preventDefault
 */
jQuery.fn.extend({
	mousewheel: function(up, down, preventDefault) {
		return this.hover(
			function() {
				jQuery.event.mousewheel.giveFocus(this, up, down, preventDefault);
			},
			function() {
				jQuery.event.mousewheel.removeFocus(this);
			}
		);
	},
	mousewheeldown: function(fn, preventDefault) {
		return this.mousewheel(function(){}, fn, preventDefault);
	},
	mousewheelup: function(fn, preventDefault) {
		return this.mousewheel(fn, function(){}, preventDefault);
	},
	unmousewheel: function() {
		return this.each(function() {
			jQuery(this).unmouseover().unmouseout();
			jQuery.event.mousewheel.removeFocus(this);
		});
	},
	unmousewheeldown: jQuery.fn.unmousewheel,
	unmousewheelup: jQuery.fn.unmousewheel
});


jQuery.event.mousewheel = {
	giveFocus: function(el, up, down, preventDefault) {
		if (el._handleMousewheel) jQuery(el).unmousewheel();
		
		if (preventDefault == window.undefined && down && down.constructor != Function) {
			preventDefault = down;
			down = null;
		}
		
		el._handleMousewheel = function(event) {
			if (!event) event = window.event;
			if (preventDefault)
				if (event.preventDefault) event.preventDefault();
				else event.returnValue = false;
			var delta = 0;
			if (event.wheelDelta) {
				delta = event.wheelDelta/120;
				if (window.opera) delta = -delta;
			} else if (event.detail) {
				delta = -event.detail/3;
			}
			if (up && (delta > 0 || !down))
				up.apply(el, [event, delta]);
			else if (down && delta < 0)
				down.apply(el, [event, delta]);
		};
		
		if (window.addEventListener)
			window.addEventListener('DOMMouseScroll', el._handleMousewheel, false);
		window.onmousewheel = document.onmousewheel = el._handleMousewheel;
	},
	
	removeFocus: function(el) {
		if (!el._handleMousewheel) return;
		
		if (window.removeEventListener)
			window.removeEventListener('DOMMouseScroll', el._handleMousewheel, false);
		window.onmousewheel = document.onmousewheel = null;
		el._handleMousewheel = null;
	}
};
</script>

Codice: Seleziona tutto

$("#scroll_area").mousewheel(function(ev, val){
    $("#scroll_area").unbind('scroll');
    if (val > 0){
        $( "#next" ).trigger( "click" );
    }
    else if (val < 0){
        $( "#prev" ).trigger( "click" );
    }
});
Solo che quando scrollo con il mouse, si mi scrolla anche le immagini, ma mi scrolla anche porzione della pagina.

Re: [JS/JQuery] Bloccare evento scroll

Inviato: sabato 6 giugno 2015, 10:38
da Zoff
aggiungi ev.preventDefault();

Re: [JS/JQuery] Bloccare evento scroll

Inviato: sabato 6 giugno 2015, 20:04
da TommyB1992