【问题标题】:WooCommerce global.js doesn't work after update cart更新购物车后 WooCommerce global.js 不起作用
【发布时间】:2017-02-16 02:36:59
【问题描述】:

我在 global.js 中编写个人 javascript,直到我点击 WooCommerce 按钮 update_cart 之前它都可以工作。

在我的功能不起作用之后。

该功能用于更新通知显示:

    $('#nb_article').change(function() {
        if ($('#nb_article').text() = 0) {
            $('#nb_article').css("display", "none");
        } else {
            $('#nb_article').css("display", "block");
        }
    });

它在应答器中jQuery(document).ready(function($) {}

你知道我能做什么吗?

【问题讨论】:

    标签: javascript php jquery wordpress woocommerce


    【解决方案1】:

    更新购物车动作在woocommerce/assets/js/frontend/cart.js触发,寻找update_cart: function() {

    它对表单的 url 进行 ajax 调用,然后使用 ajax 调用返回的 html 更新 .woocommerce div。因此,它不起作用可能是因为 $('#nb_article') 在 .woocommerce 内部,并且插件将替换所有 html,从而丢失事件。您应该在更新后重新应用事件处理程序。

    或者,您可以通过委托应用事件,方式如下:

    $('.woocommerce').on( 'change', '#nb_article', function() {
        var $nb_article = $(this);
    
        if ( $nb_article.text() == 0) {
            $nb_article.css("display", "none");
        } else {
            $nb_article.css("display", "block");
        }
    });
    

    【讨论】:

      【解决方案2】:

      有两个问题:

      1. 在事件函数内部,你必须使用$(this),这样你才能引用触发事件的元素

      2. 在 if 语句中,您必须使用比较运算符 == 而不是 =

      所以最终的结果应该是:

      $('#nb_article').change(function() {
          var $nb_article = $(this);
      
          if ( $nb_article.text() == 0) {
              $nb_article.css("display", "none");
          } else {
              $nb_article.css("display", "block");
          }
      });
      

      它们肯定是问题,但我不知道是否与您项目的其他代码相关。

      希望对你有帮助

      【讨论】:

      • 谢谢安东尼诺。你知道我在哪里可以找到 `update_cart button 的事件吗?我搜索了两个小时,我不知道它在哪里......
      • 我用另一个答案回答了你,我无法在这里回答。
      • 啊,好吧,没问题,但比你的另一个问题 ;-)
      猜你喜欢
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2018-02-17
      • 1970-01-01
      相关资源
      最近更新 更多