【问题标题】:jquery show/hide divjquery 显示/隐藏 div
【发布时间】:2010-08-03 08:56:24
【问题描述】:

我有下一个 jquery 代码:

    <script>
    $(document).ready(function() {
        // hides the slickbox as soon as the DOM is ready
        // (a little sooner than page load)
      $('#hidden').hide();

    });

    //<![CDATA[
    function ShowHide(){
        $('#hidden').fadeIn();
        $("#shopping-cart").animate({"height": "toggle"}, { duration: 550 });
    }
    //]]>

    </script>

我使用 div#hidden 在它上面设置了一个深色背景(一种灯箱背景),并且在单击 A 后我正在显示 #shopping-cart div,其中包括一些元素,如表格、输入等.cart-按钮

<a href="#" title="" onClick="ShowHide(); return false;" class="cart-buttom">Cart</a>

用户点击A按钮后,显示购物车,显示div#hidden。我想知道,如果用户再次点击 div#shopping-cart 外部或 A 链接中的 div#hidden 是fadeOut,我是否会这样做。

现在点击 A 链接后,开始 div#shopping-cart 的动画,但 div#hidden 并没有消失。

感谢任何帮助。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    首先,让我们从内联中删除点击处理程序,因此您的链接变为:

    <a href="#" class="cart-buttom">Cart</a>
    

    那么你的 jQuery 看起来像这样:

    $(function() {
      $('#hidden').hide().click(function(e) {
        e.stopPropagation();
      });      
      $("a.cart-buttom").click(function(e) {
        $('#hidden').animate({ opacity: "toggle" });
        $("#shopping-cart").animate({"height": "toggle"}, { duration: 550 });
        e.stopPropagation();
      });
      $(document).click(function() {
        $('#hidden').fadeOut();
      });
    });
    

    You can give it a try here

    我们在这里所做的是利用event bubbling,如果点击来自&lt;a&gt;#hidden,则使用event.stopPropagation(),事件不会去任何地方(不会冒泡到@ 987654334@,通常情况下)。如果click 从任何地方else 到达document,那么它会在元素上执行.fadeOut(),再次单击“购物车”链接也是如此。

    【讨论】:

    • 这是一个很好的解决方案,但也许我没有很好地解释这个案例。现在,当#shopping-cart 为“打开”并且#hidden div 出现时.. 如果您单击#shopping-cart 上的任意位置,#hidden div 会使fadeOut 并且#shopping-cart 不会移动。但是我希望当用户单击除#shopping-cart 之外的任何地方时开始这两个事件。顺便说一句, 按钮在 div#shopping-cart 里面
    • @estorde - 我还不是 100% 清楚,看看这个:jsfiddle.net/nick_craver/68gYU/1 你是这个意思吗?
    • @Nick:这不是我需要的东西。我会尝试再次解释它。现在看看:jsfiddle.net/68gYU/19 在乞求时,#shopping 购物车应该隐藏在页面顶部。然后,当您在 a.cart-buttom 上单击时,#shopping-cart 向下移动, 在他的“父亲”#shopping 购物车处保持相同的相对位置,同时 div#hidden 出现在下方这个。然后,如果用户单击 或背景中的任何位置(#shopping-cart 除外),元素将恢复原始位置和状态。
    • @estorde - 试试这个:jsfiddle.net/nick_craver/68gYU/20 ...是不是越来越近了?
    • 我们正在接近:看看:jsfiddle.net/68gYU/37 点击“购物车”链接以外的某个位置或 div#shopping 购物车。 div 和链接将向上移动。这应该是初始位置。现在,如果您单击“购物车”链接,即 div#shopping 购物车,“购物车”链接会下降并出现 div#hidden。这是用户单击“购物车”按钮时应该开始的操作。显示 div#hidden 并且 div#shopping cart 和“Cart”链接关闭后,单击“Cart”链接或除 div#shopping cart 之外的任何位置都应重新启动初始位置。 :)
    【解决方案2】:

    如果你想在点击链接时切换淡入淡出,你可以使用toggle()

    $("a.cart-buttom").toggle(function(){
      $('#hidden').fadeIn(); 
    }, function() {
      $('#hidden').fadeOut(); 
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      相关资源
      最近更新 更多