【问题标题】:How to show div that is display:none if shopping cart is empty of items?如果购物车中没有商品,如何显示 div 是 display:none?
【发布时间】:2013-07-12 02:33:05
【问题描述】:

按照下面代码的逻辑:

<div id="add-to-cart-widget">
<div class="simpleCart_items"><div class="cartHeaders">
<div class="itemthumb">thumb</div><div  class="itemTotal">Total</div><div class="itemremove">remove</div>  </div>
</div>
<div id="if-cart-empty" style="display: none">Your cart is empty.</div>

只有存在.itemContainer 时,商品才会出现在购物车中。对于添加到购物车的每个项目,都会创建一个新容器并将其放入 #add-to-cart-widget

使用 jQuery,我如何检查 #add-to-cart-widget 是否显示 .itemContainer,如果不存在则显示 div #if-cart-empty

------- EDIT ------- (在 jsFiddle 中工作,但不在现场)

这是我在我的网站上发布的确切代码。我在.itemremove 上添加了一个额外的.click 事件,因此您可以单击“删除”容器并对其进行测试:

<div id="add-to-cart-widget">
<div class="simpleCart_items">
    <div class="cartHeaders">
            <div class="itemthumb">thumb</div>
            <div  class="itemTotal">Total</div>
            <div class="itemremove">remove</div>
        </div>
</div>
<div id="if-cart-empty" style="display:none;">Your cart is empty.</div>
    </div>    

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
if (!$('.itemContainer').is(":visible")) {
    $('#if-cart-empty').show();
} else {
    $('#if-cart-empty').hide();
}

$('.itemremove').click(function(){
 $('.itemContainer').hide();
});
    });
</script>

<style type='text/css'>
  .itemContainer {background:red;}
</style>

忘记放置测试站点的链接:

http://sitetestexample.blogspot.com/p/cart-empty-test.html

这是将商品添加到购物车时#add-to-cart-widget 的样子(上面的第一个代码是购物车中没有任何商品时的样子):

<div id="add-to-cart-widget">
<div class="simpleCart_items">
<div class="cartHeaders">
<div class="itemthumb">thumb</div>
<div class="itemTotal">Total</div>
<div class="itemremove">remove</div></div>
    <div class="itemContainer"><div class="itemthumb">
       <img border="0" src="http://3.bp.blogspot.com/-CB2o1hPryRo/Ub54iT3ggVI/AAAAAAAAFJY/W6iBiOFaggo/s1600/picture+001.jpg">
</div>
<div class="itemTotal">$80,000.00</div>
<div class="itemremove"><a href="javascript:;" onclick="simpleCart.items['c3'].remove();">x</a> 
</div></div></div>
<div id="if-cart-empty" style="display:none;">Your cart is empty.</div>
</div>

【问题讨论】:

    标签: jquery html if-statement hidden


    【解决方案1】:

    更新答案

    演示http://jsfiddle.net/yeyene/BAs2m/8/

    移除item后,需要再次检查itemContainer是否还在。

    由于您要删除项目,我建议使用.remove() 而不是.hide()

    checkCart();
    
    $('.itemremove').click(function(){    
        $('.itemContainer').remove();  
        checkCart();
    });
    
    function checkCart(){
        var item = $('.itemContainer');
        if (item.length > 0) {
            $('#if-cart-empty').hide();
        } else {
            $('#if-cart-empty').show();
        }
    }
    

    【讨论】:

    • jsFiddle 是完美的。但是,由于某些奇怪的原因,它在我的网站上不起作用。我昨天和今天花了几个小时试图找出原因。我在帖子中添加了编辑,有什么想法吗?
    • 检查我的更新答案并准备好将这个脚本移到文档中。
    • 我将您更新的答案直接复制并粘贴到我的帖子中(准备好文档),但仍然没有。我忘记放测试链接了,它现在在那里,所以你可以明白我的意思。
    • 嗯,这就解释了。好的,在原始站点(不是测试站点)中,有一个名为 .cartHeaders 的部分,其中 .itemthumb、.itemTotal 和 .itemremove 保留在 #add-to-cart-widget 中,并且当将项目添加到在购物车中,该项目的实际变量会创建一个名为 .itemContainer 的新类,其中还包含项目 .itemthumb、.itemTotal 和 itemremove。这发生在 .cartHeader 部分下。因此,.itemContainer 是唯一可见或不可见的 DIV。所有其他人总是在 #add-to-cart-widget 内的 cartHeaders 下。
    • 我们如此接近,我可以品尝到它。我希望你没有放弃我。现在所有的div都是正确的。我有空购物车的准确 HTML 代码以及购物车中的商品。只需要相应的 jQuery 代码来检查 .itemContainer 是否存在于 #add-to-cart-widget 中,如果不存在则显示 #if-cart-empty ,反之亦然。
    【解决方案2】:

    这样的事情会起作用:

    function check_cart(){
       n = $('.itemContainer .itemthumb').length;
       if(n>0){ 
           $('.itemContainer').css('display','block');
           $('#if-cart-empty').css('display','none');
       }else{
           $('.itemContainer').css('display','none');
           $('#if-cart-empty').css('display','block');
       }
    }
    
    $(document).ready(function(){
        $('.itemremove, .itemadd').click(function(){
           check_cart();
        });
    });
    

    【讨论】:

    • 我在 jsfiddle 中尝试了你的答案,但没有运气,可能我做错了什么。我也无法让它在网站上工作,但我也无法得到其他答案,所以我不觉得是你的代码有问题。您的代码经过深思熟虑,我非常喜欢它。我投了赞成票。关于它可能无法在 jsfiddle 中工作的任何想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2021-05-05
    相关资源
    最近更新 更多