2012-02-22 18 views
17

Hay una manera de desencadenar un evento de rueda de desplazamiento con un delta arbitrario. Al igual que con jQuery hace 'clic' como:Evento de rueda de mouse 'ficticio' desencadenante

$('#selector').trigger('click'); 

necesito algo así simplemente con una rueda de desplazamiento como:

$('#selector').trigger('DOMMouseScroll',{delta: -650}); 
//or mousewheel for other browsers 

que no puedo hacer algo como 'falso' con trucos css , Necesito activar el evento nativo real (o lo más cercano posible).

Gracias!

+0

¿Ha comprobado el [jQuery Docs] (http://api.jquery.com/scroll/) – Chad

+0

Sí, el desplazamiento se basa en la posición, y necesito la llamada nativa real al evento scrollwheel, porque hay algunos acciones vinculadas a esos eventos. Gracias de todos modos – escusado

+0

intente comprobar este artículo http://www.howtocreate.co.uk/tutorials/javascript/browserwindow Creo que tiene lo que necesita. –

Respuesta

-6
this.trigger("mousewheel", {intDelta:0, deltaX:0, deltaY:0}); 

realidad esto funciona mejor:

this.trigger("mousewheel", [0]) 
-2

Esto llamará a la función de desplazamiento si ha escrito cualquier

$(window).scroll(); 
-5

Hola, puedes hacer eso agregando un detector de eventos. He buscado el mismo y obtuve el siguiente fragmento de código y está funcionando. Compruebe que ha recibido el mismo requisito


<html> 
<head> 
<title>Mouse Scroll Wheel example in JavaScript</title> 
<style> 
#scroll { 
width: 250px; 
height: 50px; 
border: 2px solid black; 
background-color: lightyellow; 
top: 100px; 
left: 50px;`enter code here` 
position:absolute; 
} 
</style> 
<script language="javascript"> 
window.onload = function() 
{ 
//adding the event listerner for Mozilla 
if(window.addEventListener) 
    document.addEventListener('DOMMouseScroll', moveObject, false); 

//for IE/OPERA etc 
document.onmousewheel = moveObject; 
} 
function moveObject(event) 
{ 
var delta = 0; 

if (!event) event = window.event; 

// normalize the delta 
if (event.wheelDelta) { 

    // IE and Opera 
    delta = event.wheelDelta/60; 

} else if (event.detail) { 

    // W3C 
    delta = -event.detail/2; 
} 

var currPos=document.getElementById('scroll').offsetTop; 

//calculating the next position of the object 
currPos=parseInt(currPos)-(delta*10); 

//moving the position of the object 
document.getElementById('scroll').style.top = currPos+"px"; 
document.getElementById('scroll').innerHTML = event.wheelDelta + ":" + event.detail; 
} 
</script> 
</head> 
<body> 
Scroll mouse wheel to move this DIV up and down. 
<div id="scroll">Event Affect</div> 
</body> 
</html> 
------------------------------------------------------------ 

basado en la variable delta puede escribir su propia funcionalidad personalizada.

en HTML 5 caso de desplazamiento del ratón se está manejando se puede tratar de esa manera también

+0

Creo que esto viola "No puedo hacer nada como 'falso' con trucos css". –

-2

He utilizado este código en hacer mi propio desplazamiento.

$('body').bind('mousewheel DOMMouseScroll', function(event) { 
    var delta = Math.max(-1, Math.min(1, (event.originalEvent.wheelDelta || -event.originalEvent.detail))) * -1; 
} 

He añadido * -1 a invertir. puedes eliminarlo

1

Es necesario utilizar jQuery.Event Por ejemplo:

// Create a new jQuery.Event object with specified event properties. 
var e = jQuery.Event("DOMMouseScroll",{delta: -650}); 

// trigger an artificial DOMMouseScroll event with delta -650 
jQuery("#selector").trigger(e); 

Consulte más aquí: http://api.jquery.com/category/events/event-object/

+0

En los documentos, no dice que admita la propiedad 'delta' de forma cruzada. En realidad, ni siquiera menciona que lo admite en absoluto en los objetos de evento. – Alvaro

+2

Parece que no funciona: http://jsfiddle.net/95ssxLc9/1/ – Alvaro

1

Usted puede utilizar el evento jQuery desplazamiento y de devolución de llamada u ur puede hacer matemáticas. Encuentra el código snipet útil.

//to make dummy paragraphs 
 
$("p").clone().appendTo(document.body); 
 
$("p").clone().appendTo(document.body); 
 
$("p").clone().appendTo(document.body); 
 
$("p").clone().appendTo(document.body); 
 
$("p").clone().appendTo(document.body); 
 
$("p").clone().appendTo(document.body); 
 
//dummy paragraphs end here 
 
//the below scroll() callback is triggered eachtime mouse wheel scroll happens 
 
$(window).scroll(function() { //i reference to window if u want u can iD a div and give div ID reference as well 
 
    console.log("scolling...."); 
 
    //update with the delta u required. 
 
});
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>scroll demo</title> 
 
    <style> 
 
    div { 
 
    color: blue; 
 
    } 
 
    p { 
 
    color: green; 
 
    } 
 
    span { 
 
    color: red; 
 
    display: none; 
 
    } 
 
    </style> 
 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
 
</head> 
 
<body> 
 
    
 
<div>Try scrolling the iframe.</div> 
 
<p>Paragraph - <span>Scroll happened!</span></p> 
 
    
 

 
    
 
</body> 
 
</html>

0

puede intentar escribir esto en la consola, y ver sus efectos:

document.body.scrollTop = document.body.scrollTop + 200 

donde 200 es un número arbitrario. Del mismo modo, también se puede probar esto con scrollLeft:

document.body.scrollLeft = document.body.scrollLeft + 200 

o

document.body.scrollLeft = document.body.scrollLeft - 200 

Usted podría intentar jugar con este concepto y el método() setInterval ventana.

Además ........

se puede obtener el desplazamiento de un elemento de la siguiente manera:

jQuery("#vote-to-add-section").offset() 

que le dará un resultado como:

{top: 9037.1875, left: 268} 

Puede desplazarse a ese elemento con algo como esto:

document.body.scrollTop = jQuery("#vote-to-add-section").offset().top 

Alternativamente ........

Si sólo desea que el sitio ya se puede desplazar hacia abajo para un elemento en particular cuando el sitio se carga por primera vez, se puede hacer esto con elementos que tienen una id:

Agregue #idnamehere al final de una url que está buscando. Debe haber un elemento con ese nombre de identificación en la página.

Por ejemplo comparar estos URL, y lo que se obtiene cuando se los introduce en la barra de direcciones URL:

https://travel.usnews.com/rankings/worlds-best-vacations https://travel.usnews.com/rankings/worlds-best-vacations/#vote-to-add-section

El de # voto a la sección añadir al final es automáticamente se desplazó hacia abajo al elemento con id # vote-to-add-section.

Cuestiones relacionadas