0

嗨,我正在运行一个相当简单的脚本,它在单击时显示隐藏 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>
4

1 回答 1

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

希望能帮助到你。

于 2013-08-04T20:28:10.470 回答