rueda raton onwheel lib evento detectar demos activar javascript jquery mouseevent mousewheel scrollwheel

javascript - raton - resources demos external jquery mousewheel jquery mousewheel js



Trigger evento de rueda de ratón "ficticio" (9)

¿Hay alguna manera de activar un evento de la rueda de desplazamiento con un delta arbitrario? Al igual que jQuery hace con ''clic'' como:

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

Necesito algo así solo con una rueda de desplazamiento como:

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

No puedo hacer nada como ''fingir'' con el truco de CSS, necesito activar el evento nativo real (o lo más cerca posible).

¡Gracias!



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

$(window).scroll();


Hola, puedes hacerlo agregando un detector de eventos. Busqué lo mismo y obtuve el siguiente fragmento de código y está funcionando. comprueba que tienes 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 se está manejando el evento de desplazamiento del mouse, también puede intentarlo de esa manera


Necesitas usar 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 );

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


Puede usar el evento jquery scroll y, al devolver la llamada, puede hacer sus cálculos. Por favor, encuentre 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>


Puedes 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 puedes probar esto con scrollLeft:

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

o

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

Puedes intentar jugar con este concepto y con el método de la ventana setInterval ().

Adicionalmente........

Puede obtener el desplazamiento de un elemento de la siguiente manera:

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

lo que te dará un resultado como:

{top: 9037.1875, left: 268}

Podrías desplazarte a ese elemento con algo como esto:

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

Alternativamente........

Si solo desea que el sitio ya se desplace hacia un elemento en particular cuando se carga el sitio por primera vez, puede hacerlo con elementos que tengan una identificación:

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, compare estas URL y lo que obtiene cuando las ingresa en la barra de direcciones de la URL:

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

El que tiene # sección de voto para agregar al final se desplaza automáticamente hacia abajo hasta el elemento con id # sección de voto para agregar.



Utilicé este código para hacer mi propio pergamino.

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

Agregué * -1 para invertir. Usted puede eliminarlo.


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

en realidad esto funciona mejor:

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