Haotik
@Haotik
PHP мидл без фреймворков

Как сделать bind unbind функции JS/JQ?

Имеется вот такой код который выводится в результате AJAX запроса
var disable_element = function(){
        $.ajax({
                url: '/local/coupone_disable.php',
                type: 'POST',
                data: {id:<?=$arfields["ID"]?>},
            })
            .done(function(data) {
                console.log(data);
            })
        };
        $('.step-two-calccost__button').unbind(disable_element);
        if ($disable_after_do) {
          $('.step-two-calccost__button').bind(disable_element);
        }


Суть кода, требуется изменить свойство элемента по щелчку кнопки.

Если я данную функцию цепляю напрямую к элементу, то при каждом аякс на кнопку вешается новый обработчик со своими параметрами и возможно ситуация что будет висеть 5-6 элементов для выключения, хотя по факту надо отключить только 1 из них.

Для того что бы этого не происходило я пытаюсь сперва отвязать данный обработчик, а далее повесить его заново с новыми параметрами. (сделать полный unbind() нельзя так как на целевой кнопке есть другие обработчики)

Однако в консоли я получаю вот такую ошибку
Uncaught TypeError: (intermediate value).match is not a function

И к сожалению не могу понять где именно идет поломка
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
bind\unbind - древний синтаксис, сейчас оно называется on\off.
Новое название лучше намекает на то, с чем у тебя проблема, возможно сам догадаешься. Но если нет:
spoiler
Первым параметром идёт собственно название события которого ты ждёшь, например 'click', а только потом функция.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы