Остановите функцию, если у страницы есть класс - PullRequest
1 голос
/ 05 ноября 2019

У меня есть простая функция, которая добавляет данные о доставке к платежным данным в моей кассе 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
    }

Спасибовы

Ответы [ 3 ]

2 голосов
/ 05 ноября 2019

Похоже, вы пытаетесь удалить обработчик кликов. Хотя это возможно, вам необходимо точно знать, когда класс добавляется в соответствующий элемент, что не всегда возможно и не просто.

Более простое решение - вместо этого поместить ваше условие if в *Функция 1004 * и обновляет 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);
1 голос
/ 05 ноября 2019

Как и в других ответах, вы можете выполнить эту проверку в вашем обработчике кликов:

//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.

  • Обычно это то, что вы описали бы в представлении своего компонента, поскольку это состояние элемента управления, отражающее состояние другого элемента управления (представленного в виде класса).
1 голос
/ 05 ноября 2019

Ваш код должен выглядеть следующим образом:

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 внутри вашей функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...