2011-05-15 15 views
10

Quiero desplazar el contenido de un div con el mouse -heel jquery plugin. Tengo esto pero no está funcionando. ¿Alguna idea?jquery mousewheel

$(function() { 
$('#contentBox').bind('mousewheel', function(event, delta) { 
    if (delta > 0) { 
     $('#contentBox').css('top', parseInt($('#contentBox').css('top'))+40); 
    } else { 
     $('#contentBox').css('top', parseInt($('#contentBox').css('top'))-40); 
    } 
    return false; 
}); 
}); 
+0

respuesta real: http://stackoverflow.com/questions/8886281/event-wheeldelta-returns-undefined?lq=1 –

Respuesta

7

Just a guess: does adding + 'px' to the CSS value fix things? En realidad, ¿a qué se refieren los "medios"?

ACTUALIZACIÓN

OK, he tenido la oportunidad de probar el código y todo se ve bien, suponiendo que haya establecido el CSS correctamente. ¿Ya asignó un valor para top en #contentBox? Sin un valor existente, parseInt($('#contentBox').css('top')) devolverá NaN. Aquí está el código que he utilizado:

$(function() { 
    $('#contentBox').bind('mousewheel', function(event, delta) { 

     $('#contentBox').css('top', parseInt($('#contentBox').css('top')) + (delta > 0 ? 40 : -40)); 

     return false; 
    }); 
}); 

#contentBox { height: 4em; background-color: #eee; border: 1px solid #ccc; position: absolute; top: 100px; width: 200px; } 

<div id="contentBox"></div> 

Nota que he utilizado el operador ternario para simplificar/reducir el código un poco, pero esto es sólo para mantener el tamaño de esta respuesta un poco, y es enteramente Opcional. También acabo de utilizar algunos CSS de prueba para ver lo que estoy haciendo; ¡Estoy seguro de que el tuyo es diferente!

+0

lástima ver texto de arriba. estaba llamando a #contentBox como medio en un punto pero eso tampoco funcionó – user520300

+0

añadiendo el + 'px' tampoco funcionó – user520300

+0

Sé que es obvio, pero un console.log() de delta y tu .css. ('top', ...) la llamada te dirá dónde está el problema. –

3

Si está utilizando jQuery 1.6, se puede escribir:

$('#contentBox').css('top','+=40'); 

y olvidarse de él.

Obviamente, aún necesita CSS para declarar correctamente #contentBox para estar en posición absoluta y todo lo demás.

15
$('#contentBox').bind('mousewheel DOMMouseScroll', function(event) { 
    event.preventDefault(); 
    var delta = event.wheelDelta || -event.detail; 
    $(this).css({'top': $(this).position().top + (delta > 0 ? '+=40' : '-=40')}); 
}); 

http://www.adomas.org/javascript-mouse-wheel/

+3

Por qué en mi navegador tanto Firefox como Chrome en Ubuntu necesitan usar esto para que funcione :('var delta = e.wheelDelta || -e.detail || e.originalEvent.wheelDelta || -e. originalEvent.detail' – Kannika

Cuestiones relacionadas