I am trying to make my page scroll when you hover on a div. This is what I got so far
$(document).ready(function() {
$("#hoverscroll").mouseover(function() {
var div = $('body');
setInterval(function(){
var pos = div.scrollTop();
div.scrollTop(pos + 1);
}, 100)
});
});
However, there are two things left to do. I need it to increase speed each time you click, stop when you're no longer hovering and reset the speed back to default.
I'm trying to achieve something like this:
$(document).ready(function() {
$("#hoverscroll").mouseover(function() {
var div = $('body');
setInterval(function(){
var count = 1;
var pos = div.scrollTop();
div.scrollTop(pos + count);
}, 100)
});
$("#hoverscroll").click(function() {
if (count < 6) {
count = count+1;
}
});
$("#hoverscroll").mouseleave(function() {
count = 0;
});
});
I searched and found some people talking about binding event and setting a global variable to check if it's scrolling. But will the above function work? I am still learning. I might be completely wrong.
You're not that far off from the solution. You need to assign the
interval
ortimeout
to a variable and clear it when you hover off the element:http://jsfiddle.net/3yJVF/2/
I updated the code of the accepted question because it doesn't work anymore.
See:
http://jsfiddle.net/wzvowvzn
try following against your fiddle code:
see this fiddle: http://jsfiddle.net/3yJVF/5/
You were pretty close - here's my version (http://jsfiddle.net/Lcsb6/)
Changes to note:
count
is defined above the interval/bindings. It's not quite "global" in the sense that you can get to it in the window, but it is relegated to living inside the onReady closure.interval
is the assigned value ofsetInterval
- this way we can stop it from doing anything later withclearInterval
mouseleave
before, butmouseout
should do it.$('#hoverscroll').on(...).click(...).on(...).addClass(...).blah(...)
will save you the time of typing out the selector each time. Also, have a look at jQuery'send()
method if you plan on using chaining.$.fn.on
instead of the shorthands like.click()
- it clearly denotes that you are using an event handler, consider throwing in the extra few characters foron
and dropping the excess characters in your$()
selections?