javascript - Jquery a .click 然后 .slideDown div

标签 javascript jquery html dom

我有一个 anchor ,当您单击它时,它会在 div 中向下滑动一个表单,然后再次单击会将其向上滑动。最初我只是使用 .toggle,但现在我有多个 anchor 和多个具有相同类的 div,所以我不得不重新编写代码,否则只要你点击任何一个 anchor ,所有的 div 都会滑下来,你会看到 4 个表单。

所以,我想我可以用 .closest 重写代码,但它似乎不起作用。我认为这是因为 .closest 必须上升到 DOM 层次结构,所以它不适用于我的 div 它的布局方式。我试过 .sibling 但这也不起作用。有什么想法吗?

  <a href="#" class="payment-form-show">Pre-Pay with Credit Card</a>
  <div style="display: none;" class="payment-form-wrapper">
      <h3><?php _e('Submit a Payment', 'jc_stripe'); ?></h3>
      <form action="" method="POST" id="stripe-payment-form" class="payment-form">
        ...
      </form>
  </div>

  <script>
        $("a.payment-form-show").click(function() {
            var e = $(this).closest("div.payment-form-wrapper");
                    if (e.is(":hidden")) {
                        e.slideDown("slow");
                        $(this).html("Don't Pre-Pay with Credit Card")
                    } else {
                        e.slideUp("slow");
                        $(this).html("Pre-Pay with Credit Card")
                    }
            return false;
        });
    </script>

最佳答案

我认为您应该将 a.payment-form-show 和 div.payment-form-wrapper 包装在一个 div 中。像这样:

<div>
<a href="#" class="payment-form-show">Pre-Pay with Credit Card</a>
  <div style="display: none;" class="payment-form-wrapper">
      <h3><?php _e('Submit a Payment', 'jc_stripe'); ?></h3>
      <form action="" method="POST" id="stripe-payment-form" class="payment-form">
        ...
      </form>
  </div>
</div>
  • 当点击 a 标签时,您查找直接父级,然后找到表单:

    $(this).parent().find("div.payment-form-wrapper");

  • 在这种情况下,div 包装器用作您的标记的上下文。这将创建更易于维护的代码。因为当您使用 .next() 或某些函数来查找 .div.payment-form-wrapper 时,您的 javascript 代码会耦合到标签的当前位置。以后如果修改位置,或者在中间添加一些标签,你的代码就会失败。

关于javascript - Jquery a .click 然后 .slideDown div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845792/

相关文章:

javascript - axios Get 请求问题

javascript - 在 Ember js 中,如何在单元测试中创建或模拟 hasMany 关系

javascript - ReactJS方法不断返回未定义

页面关闭后的javascript警报问题

javascript - 缺少样式的 append 元素

javascript - 外部脚本缓存

javascript - OAuth 2.0 是保护 Web 服务访问的合适工具吗?

javascript - jQuery 改变 html 输入 onClick 的值

javascript - 对话框和自动高度

html - 了解 HTML/CSS 的行为