link with href="#" scrolls page to top when used with jquery slidetoggle [duplicate]
Possible Duplicate:
How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?
I'm using jquery's slidetoggle to show/hide divs. the element that controls the sliding is a text link ( some text inside <\a>) which has href="#" so it will look like a link (underline, cursor change).
the problem is that when the link is clicked, in addition to the sliding effect, the page scrolls to top.
i tried replacing href="#" with href="" but that disables the div show/hide effect. i guess i could add to the tag Name="somename" and then set the href to href="#somename" but i would rather not use tricks like that.
why is href="#" scrolling the pa开发者_如何转开发ge to its top?
any ideas would be highly appreciated
Several options:
- Put
return false;
at the bottom of your click handler and the href wont be followed. - Change the href to
javascript:void(0);
Call
preventDefault
on the event in your handler:function( e ) { e.preventDefault(); // your event handling code }
You need to add return false;
to your click handler.
This will prevent the browser from executing the default action for the click.
return false
or event.preventDefault()
are what you need in your click event handler to prevent the default action from occurring. An <a>
element with a href
of #
will cause the browser viewport to jump to the top of the page as the default action
Others have given you solutions. But to specifically answer your question, #
refers to the current page. And since the interpretation of tags is to bring the top of the tag into view, clicking on a #
tag scrolls you to the top of the current page.
精彩评论