jQuery slideToggle分别切换元素

时间:2011-02-24 16:53:00

标签: jquery toggle slidetoggle

我根据自己的喜好设计了新的WP Admin Bar,并添加了一个“隐藏”按钮。我将按钮设置为slideToggle“wpadminbar”div。当我点击隐藏它时,div和搜索表单(嵌套在“wpadminbar”div中)两者切换。这是一个问题的视频...

jQuery toggle problem

代码很简单。

$(function()    {
    $("a#hide-admin").click(function(){
        $(this).toggleClass('hidden', 1000);
        $("#wpadminbar").slideToggle(1000);
    });
});

当我将.slideToggle更改为.toggle时,会发生同样的事情。知道造成这种情况的原因和/或如何解决这个问题?

修改 这是所有相关的代码。

  <div id="wpadminbar">
    <div class="quicklinks">
      <ul>
                <li> Admin Bar links go here... </li>
    </div>
    <div id="adminbarsearch-wrap">
      <form action="http://myurl.com"
            method="get"
            id="adminbarsearch"
            name="adminbarsearch">
        <input class="adminbar-input"
              name="s"
              id="adminbar-search"
              type="text"
              value=""
              maxlength="150" /> <input type="submit"
              class="adminbar-button"
              value="Search" />
      </form>
    </div>
  </div>

CSS:

#wpadminbar {
    position: fixed;
    top: 0;
    height: 41px;
    width: 100%;
    background: url(images/adminbar-bg.png) repeat-x;
}

.quicklinks ul  {
  list-style:none;
  margin:0;
  padding:0;
  text-align:center;
  display: inline;
}

.quicklinks ul li   {
    display: inline;
}

.quicklinks ul li a {
  display:inline-block;
  padding:0 10px;
    text-decoration: none;
    font-weight: 700;
    color: #fff;
    line-height: 41px;
    font-family: "Helvetica", Arial, sans-serif;
    font-size: 12px;
    text-shadow: 1px 1px 0 #111;
}

#adminbarsearch {
    width: 250px;
    height: 41px;
    position: fixed;
    right: 10px;
    top: 10px;
}

#hide-admin {
    display: block;
    position: fixed;
    right: 10px;
    top: 51px;
    font: bold 11px Helvetica, Arial, sans-serif;
    color: #fff;
    background: #C91D07;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
    padding: 6px 10px;
    cursor: pointer;
}

#hide-admin.hidden  {
    top: 10px !important;
}

2 个答案:

答案 0 :(得分:2)

如果你的管理栏的CSS已经以除静态之外的任何方式定位(看起来可能是这样),为什么不只是为顶部位置设置动画?

$('a#hide-admin').click(function () {
    $('#wpadminbar').add(this).animate({
        top: '-=' + $('#wpadminbar').height()
    }, 1000, function () {
        // Callback to manipulate the #hide-admin button if desired
    });
});

如果你想要一种来回切换的功能,你只需要做一点点思考。例如,您可以根据条形图是否仍在屏幕上以编程方式创建动画选项对象,正确修改{} .top值。

答案 1 :(得分:2)

您的问题与此处的position:fixed

有关
#adminbarsearch {
width: 250px;
height: 41px;
position: fixed;
right: 10px;
top: 10px;
}

如果你删除它,你会看到切换现在正常工作

示例http://jsfiddle.net/circadian/YvnrS/2/