为什么我的javascript toggleclass代码不起作用?

vxbzzdmp  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(511)

我试图在单击时将.open类添加到div。它目前不起作用,我不知道为什么。
这是我的js

(function ($) {
    // sticky footer form class toggle on click
    $(".nb-form .form-header").on("click", function () {
        $(".nb-form").toggleClass("open");
    });

这是我的html

<div class="nb-form">
    <div class="form-header">
        <p class="title">Request a Quote</p>
        <img src="https://soldaf.ca/wp-content/uploads/2020/11/Andrew-headshot-e1606168346405.jpg" alt="Andrew Foster" class="user-icon">
    </div>    

    <div class="form-content">
        <p class="message">Send us a message or give us a call at <span class="d-inline-block">(403) 915-6195.</span></p>   
        <?php echo do_shortcode( '[[contact-form-7 id="4545" title="Contact form 1"]]' ); ?>
    </div>
  </div>

作为参考,我正试图复制这个网站右下角的“有一个问题”小部件https://soldaf.ca/
谢谢

uemypmqf

uemypmqf1#

问题似乎是因为用于包含jquery代码的语法是立即调用的函数表达式(iife),而不是jquery document.ready处理程序。这意味着您的代码是在加载dom之前运行的,因此您试图绑定事件处理程序的元素还不存在。
要解决此问题,请使用标准jquery document.ready事件处理程序:

jQuery($ => {
  // sticky footer form class toggle on click
  $(".nb-form .form-header").on("click", () => {
    $(".nb-form").toggleClass("open");
  });
});
/* Note this CSS is only for demo purposes and isn't relevant to the issue */
img { width: 50px; }
.nb-form .form-content { display: none; }
.nb-form.open .form-content { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="nb-form">
  <div class="form-header">
    <p class="title">Request a Quote</p>
    <img src="https://soldaf.ca/wp-content/uploads/2020/11/Andrew-headshot-e1606168346405.jpg" alt="Andrew Foster" class="user-icon" />
  </div>

  <div class="form-content">
    <p class="message">Send us a message or give us a call at <span class="d-inline-block">(403) 915-6195.</span></p>
    <?php echo do_shortcode( '[[contact-form-7 id="4545" title="Contact form 1"]]' ); ?>
  </div>
</div>
sq1bmfud

sq1bmfud2#

请尝试使用此代码

<div class="nb-form">
    <div class="form-header">
        <p class="title">Request a Quote</p>
        <img src="https://soldaf.ca/wp-content/uploads/2020/11/Andrew-headshot-e1606168346405.jpg" alt="Andrew Foster" class="user-icon">
    </div>    

    <div class="form-content">
        <p class="message">Send us a message or give us a call at <span class="d-inline-block">(403) 915-6195.</span></p>   
        <?php echo do_shortcode( '[[contact-form-7 id="4545" title="Contact form 1"]]' ); ?>
    </div>
</div>

jquery

$(".nb-form .form-header").on("click", function () {
    $(".nb-form .form-content").toggleClass("open");
    // or else you can use toggle method
    $(".nb-form .form-content").toggle()
});

相关问题