【问题标题】:Stop a function if page has a class如果页面有类,则停止函数
【发布时间】:2019-11-05 18:41:28
【问题描述】:

我有一个简单的功能,可以在我的 woocommerce 结帐时将运输详细信息附加到帐单详细信息中。但是,一旦将类添加到 div,我希望此函数停止触发。

function billingclick() {
    $('#billing_first_name').val($('#shipping_first_name').val());
    $('#billing_last_name').val($('#shipping_last_name').val());    
};

$('.wpmc-ripple.wpmc-billing').on('click', function(e) {
    billingclick();
}); 

我不能使用一键式功能,因为验证会破坏这一点。

如果添加了 div 类,有什么方法可以停止该功能?

例如,如果 .wpmc-step-shipping 具有当前类,则停止 billingclick() 函数。

    if (!$(".wpmc-step-shipping").hasClass("current")) {
        // function here
    }

谢谢

【问题讨论】:

  • 把你的if条件放在billingclick()函数里,把当前的逻辑放在这个条件里面。然后它会工作
  • 你已经用最后一段回答了你的问题
  • 那么我该怎么做呢?我是否使用 .stop() 函数?
  • 但是我该怎么做呢?你有一个编码示例吗?到目前为止,我有这个函数 billingclick() { $('#billing_first_name').val($('#shipping_first_name').val()); $('#billing_last_name').val($('#shipping_last_name').val()); if (!$(".wpmc-step-shipping").hasClass("visited")) { $(this).stop(); } };
  • 你太复杂了;忘记stop(),它根本与此无关。我为你添加了一个答案来解释我的意思。

标签: jquery html css


【解决方案1】:

您似乎正在尝试删除点击处理程序。虽然这是可能的,但您需要确切地知道何时将类添加到相关元素,这并不总是可行的,也不简单。

更简单的解决方案是将if 条件放在billingclick() 函数中,并且仅在类不存在时更新所需元素的val()。试试这个:

function billingclick() {
  if (!$(".wpmc-step-shipping").hasClass("current")) {
    $('#billing_first_name').val($('#shipping_first_name').val());
    $('#billing_last_name').val($('#shipping_last_name').val());
  }
};

$('.wpmc-ripple.wpmc-billing').on('click', billingclick);

【讨论】:

    【解决方案2】:

    您的代码应如下所示:

    function billingclick() {
      if (!$(".wpmc-step-shipping").hasClass("current")) {
        $('#billing_first_name').val($('#shipping_first_name').val());
        $('#billing_last_name').val($('#shipping_last_name').val());  
      }  
    };
    
    $('.wpmc-ripple.wpmc-billing').on('click', function(e) {
        billingclick();
    }); 
    

    首先在你的函数中执行if condition

    【讨论】:

      【解决方案3】:

      正如其他答案所说,您可以在点击处理程序中执行该检查:

      //this should probably be renamed to be updateBillingWithShipping
      function billingclick() {
          $('#billing_first_name').val($('#shipping_first_name').val());
          $('#billing_last_name').val($('#shipping_last_name').val());    
      };
      
      $('.wpmc-ripple.wpmc-billing').on('click', function(e) {
          if (!$(".wpmc-step-shipping").hasClass("current")) {
              billingclick();
          }
      }); 
      

      您还可以删除 $('.wpmc-ripple.wpmc-billing') 上的事件处理程序

      您还可以禁用“.wpmc-ripple.wpmc-billing”控件。

      • 这通常是您在组件视图中描述的内容,因为它是反映另一个控件(表示为类)状态的控件状态。

      【讨论】:

      • 我通常不喜欢针对给定问题列举多种可能的实现方法(我喜欢认为任何给定方法都可能出现更高质量的答案。),但我觉得值得一提。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多