javascript-show工作,但不隐藏

时间:2013-08-04 20:07:59

标签: javascript css hide element

嗨,我正在运行一个相当简单的脚本,在单击时显示隐藏div中的内容。问题是“隐藏”元素不起作用“显示”。

<script type="text/javascript">
    $(function() {
    $(".slidingDiv").hide();
    $(".hide, .show").show().on('click', function(e) {
        var elm = $(e.target).is('.show') ? $(e.target) : $(e.target).parent().prev('.show');
        elm.toggle().next(".slidingDiv").slideToggle()
    });
});
</script>

<style type="text/css">
.slidingDiv {
    display: none;
    height:200px;
    width:auto;
}
</style

<div id="footer-widgets-container">
    <div id="footer-widgets" class="col-full col-4"> <a href="#" class="show">Show</a>

        <div class="slidingDiv">
            <div class="block footer-widget-1 widget">
                <div class="col1a"></div>
                <div class="col3c"></div>
                <div class="col2b"></div>
            </div>
            <div class="block footer-widget-2"></div>
            <div class="block footer-widget-3"></div>
            <div class="block footer-widget-4">
                <div class="skype p"><a href="#"><p>Skype</p></a>
                </div>
                <div class="email p"><a href="#"><p>Email</p></a>
                </div>
            </div>
        </div>
    </div><a href="#" class="hide">Hide</a>

</div>

1 个答案:

答案 0 :(得分:1)

这是因为你使用了错误的选择器。

您可以更改hide代码,使其位于正确的div内,或者更改您的代码:

<script type="text/javascript">
    $(function() {
        $(".slidingDiv").hide();
        $(".hide, .show").show().on('click', function(e) {
            var elm = $(e.target).is('.show') ? $(e.target) : $(e.target).parent().find('.show');
            elm.toggle().next(".slidingDiv").slideToggle()
        });
    });
</script>

我已将$(e.target).parent().prev('. show')更改为$(e.target).parent().find('.show'),因为show不在div内。

希望它有所帮助。