可点击的父 DIV 显示和隐藏子 DIV 在 jQuery 中存在问题

发布于 2024-09-28 07:05:28 字数 1016 浏览 7 评论 0原文

这有点疯狂,我不确定出了什么问题。我想让一个 DIV 可点击来显示/隐藏子 div。但一旦我隐藏了一个孩子,我就无法将其取消隐藏。

这是我的整个代码。任何帮助表示赞赏。在下面的示例中,单击取消按钮时我无法取消隐藏inner1。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>

<div class="wrapper">
    <div class="inner1">
    1
    </div>

    <div class="inner2" style='display:none'>
    2 <input type='button' value='cancel' class='cancel'>
    </div>

</div>


<style>
div {border:1px solid red;}
</style>

<script>
$(document).ready(function() { 
        $('.wrapper').live("click", function(){
            $('.inner1').hide();
            $('.inner2').show();
        });


        $('.cancel').live("click", function(){
            $('.inner1').show();
            $('.inner2').hide();
        });
});
</script>

This is kind of crazy and I am not sure what's wrong. I want to make a DIV clickable to show/hide children divs. But once I do a hide of one children, I cannot unhide it.

Here's my entire code. Any help appreciated. IN example below, I cannot unhide inner1 when clicking Cancel button.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>

<div class="wrapper">
    <div class="inner1">
    1
    </div>

    <div class="inner2" style='display:none'>
    2 <input type='button' value='cancel' class='cancel'>
    </div>

</div>


<style>
div {border:1px solid red;}
</style>

<script>
$(document).ready(function() { 
        $('.wrapper').live("click", function(){
            $('.inner1').hide();
            $('.inner2').show();
        });


        $('.cancel').live("click", function(){
            $('.inner1').show();
            $('.inner2').hide();
        });
});
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远昼 2024-10-05 07:05:28

您需要使用以下命令来阻止 .cancel 上的 click 冒泡以及 .wrapper 上的点击 .stopPropagation(),如下所示:

$('.cancel').live("click", function(e){
  $('.inner1').show();
  $('.inner2').hide();
  e.stopPropagation();
});

您可以在这里测试。当前发生的情况是您将其隐藏,但随后 .wrapper 点击处理程序获得点击并立即再次显示 .inner2

You need to stop the click on .cancel from bubbling up and also being a click on .wrapper by using .stopPropagation(), like this:

$('.cancel').live("click", function(e){
  $('.inner1').show();
  $('.inner2').hide();
  e.stopPropagation();
});

You can test it out here. What's currently happening is you are hiding it, but then the .wrapper click handler gets the click and immediately shows .inner2 again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文