I'm just trying to preform a very simple jQuery action.
I have two components: #safety and #safety-tab a, the #safety needs to be hidden on load. When the a link in the #safety-tab is clicked, it will hide itself and slideUp the #safety.
This sort of works, but the #safety box just flickers on click, doesn't stay shown:
$(document).ready(function() {
$("#safety-tab a").click(function() {
$(this).hide();
$("#safety").removeClass("hide");
});
});
While the markup is this:
<div id="safety" class="hide group">
...
</div><!--end #safety-->
<div id="safety-tab">
<a href="">...</a>
</div><!--end #safety-tab-->
开发者_运维技巧
Any idea what I'm doing wrong?
Add return false; or event.preventDefault() to your click handler.
$(document).ready(function() {
$("#safety-tab a").click(function( event ) {
$(this).hide();
$("#safety").removeClass("hide");
event.preventDefault();
});
});
This prevents the default behavior of the <a> element, which is reloading the page.
- http://api.jquery.com/event.preventDefault
Using event.preventDefault() will preserve event bubbling which is sometimes needed.
Doing return false; will prevent the default behavior, but it will also halt the bubbling.
try return false as you are clicking on a link;
$(document).ready(function() {
$("#safety-tab a").click(function() {
$(this).hide();
$("#safety").removeClass("hide");
return false;
});
});
加载中,请稍侯......
精彩评论