2012-02-22 297 views
17

有沒有辦法觸發帶有任意三角形的滾輪事件? 就像jQuery也與「點擊」,如:觸發'虛擬'鼠標滾輪事件

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

我需要的東西一樣,只是像一個滾輪:

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

我不能做任何事情,像「假貨」用CSS掛羊頭賣狗肉,我需要觸發實際的本地(或儘可能接近)事件。

謝謝!

+0

你檢查了[jQuery文件](http://api.jquery.com/scroll/) – Chad 2012-02-22 22:48:30

+0

是的,滾動是基於位置的,我需要實際的本地調用滾動事件,因爲有一些綁定到這些事件的行動。無論如何感謝 – escusado 2012-02-23 00:04:54

+0

嘗試檢查這篇文章http://www.howtocreate.co.uk/tutorials/javascript/browserwindow我認爲它有你需要的。 – 2012-02-22 22:49:28

回答

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

其實這工作得更好:

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

這將調用,如果你的滾動功能已經寫了任何

$(window).scroll(); 
-5

嗨,你可以通過添加一個事件監聽器來實現。我已經搜索了相同的,並得到了下面的代碼片段,它正在工作。檢查您根據您可以編寫自己的自定義功能的增量變量相同的需求


<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> 
------------------------------------------------------------ 

HTML 5中的鼠標滾輪事件正在處理,你可以以這種方式也

+0

我相信這違反了「我不能做任何事情,像'假'它與CSS技巧」。 – 2014-03-17 19:28:22

-2

我在做我自己的滾動使用此代碼嘗試。

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

我加了* -1來反轉。你可以刪除它。

1

您需要使用jQuery.Event 例如:

// 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); 

時請點擊這裏:http://api.jquery.com/category/events/event-object/

+0

在文檔中,它並沒有說它以跨瀏覽器的方式支持'delta'屬性。實際上,它甚至沒有提到它在事件對象中完全支持它。 – Alvaro 2015-06-29 19:46:14

+2

它似乎沒有工作:http://jsfiddle.net/95ssxLc9/1/ – Alvaro 2015-06-29 19:51:19

1

您可以使用jQuery的滾動事件和回調U可以做烏爾數學。請找到snipet有用的代碼。

//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

你可以試着輸入這個到控制檯,看看它的效果:

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

,其中200爲任意數。 同樣,你也可以用scrollLeft試試這個:

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

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

你可以試試這個概念和窗口setInterval()方法播放。

此外........

就可以得到彌補的元素如下:

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

,這將給你喜歡的結果:

{top: 9037.1875, left: 268} 

您可以使用類似如下方式滾動到該元素:

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

或者........

如果你只是希望自己的網站已經可以向下滾動到一個特定的元素第一次加載網站的時候,你可以用擁有的元素做到這一點編號:

將#id名添加到您要搜索的網址的末尾。在頁面上必須有一個具有該id名稱的元素。

例如比較這些URL的,當你在URL地址欄輸入他們,你會得到什麼:

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

的一個以#票對加節末是自動向下滾動到id爲#vote-to-add-section的元素。