Jquery隐藏/显示奇怪的故障

Jquery hide/show weird glitch

本文关键字:故障 显示 隐藏 Jquery      更新时间:2023-09-26

使用jsfiddle会更容易,但上帝是我的见证,jsfiddler出了问题,我的js都不工作,但它们在我的本地主机上工作,所以是的。

所以让我解释一下我有一个叫topBar的div。它在dom加载时隐藏。我有一个名为toggle_bar的div单击toggle_bar时,jquery将隐藏toggle_bar并显示topBar

但我遇到的问题是,在我单击toggle_bar后,会显示topBar,但我稍微移动了一下鼠标,然后BAM!topBar不见了。我不知道为什么会这样

这是我的代码Jquery

$("#topBar").hide();
$("#toggle_bar").live("click",function (){
   $("#toggle_bar").hide();
   $("#topBar").show();
});

HTML

    <div class='toggle_bar'>
        <a href='' id="toggle_bar" class="toggle_bar_class"></a>
    </div>
<div id="topBar" class="topBar" >
    <div class="bar_frame">
        <div class="plogo">
           Page logo bla bla bla
        </div>
        <div class="controls">
          Notifications bla bla bla
        </div>
        <div class="nav_bar_frame">
        <div class="float_left_bar"> 
        </div>
        <div class="float_right_bar">
        </div>
</div>
    </div>
</div>

PS:对于toggle_bar:a,我使用css将图像设置为href。:D

toggle_bar上的href应该具有#,或者您应该在click处理程序中停止事件。

您在加载时隐藏而不是设置为在样式中不显示是有原因的吗?

OriginalSyn是对的,你可以这样写。。。

$("#toggle_bar").live("click",function () {
    $(this).hide();
    $("#topBar").show();
    return false;
});

我建议(如果您使用的是最新版本的jQuery)使用.on()或.delete()方法来代替.live()方法。我想请你参考这篇文章,它在解释差异方面做得很好。

这是一把正在工作的小提琴。你也应该使用

.on

而不是

.live

自1.7起已弃用。

似乎需要防止链接传播到URL。下面是一个如何更改点击事件处理程序的例子

http://jsfiddle.net/dp3T2/

$("#toggle_bar").live("click",function (e){
  $("#toggle_bar").hide();
  $("#topBar").show();
  e.preventDefault();
});