Поменяйте местами кнопки на JS, отключив и снова активировав их - PullRequest
0 голосов
/ 06 февраля 2020

Итак, здесь у нас go, у меня есть 2 кнопки, которые переключаются между ними, и я бы хотел убрать щелчок до повторной привязки, чтобы избежать спама. Кнопки будут переключаться все время, пока в щелчке playRound мы не получим JSON, говорящее нам об обратном.

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

вот что я попробовал:

функция для привязки кнопки "NextStage"

function bindNextStage() {
    $('#nextStage').show().click(function () {
        let $pkEnemy = document.getElementById('pkEnemy').innerText;
        $('#nextStage').hide().click(false);
        $.ajax({
            url: '/nextEnemy/' + $pkEnemy,
            type: 'get',
            dataType: 'json',
        }).done(function (result) {
            console.log("refresh some data");
            bindPlayRound();
        });
    });
}

функция для привязки playRound

function bindPlayRound($pkParty) {
    $('#playRound').show().click(function () {
        let $pkEnemy = document.getElementById('pkEnemy').innerText;
        $('#playRound').click(false).hide();
        $.ajax({
            url: '/playRound/' + $pkEnemy,
            type: 'get',
            dataType: 'json',
        }).done(function (result) {
                addBattleReport(result).then(r => {
                    console.log("do something with an other button")
                });
                console.log("refresh some data")
                if (result['isEnded'])
                        console.log('END');
                else if (result['enemy']['hp'] <= 0) {
                    bindNextStage();
                }
                else{
                    bindPlayRound()
                }
        });
    });
}

и я призываю начать

bindNextStage()

---- РЕДАКТИРОВАТЬ ----

На данный момент я могу нажать кнопку еще раз, если я делаю F12 и отображаю кнопка, но в дополнение к этому функция запускается 3 раза. Кнопка хорошо скрыта, когда я нажимаю на нее, но она не отвязывается и имеет странное поведение при запуске 3 раза.

---- EDIT 2 ---

Я понял, что тот факт, что функция .click не отменяется .click (false), запускает мою функцию столько раз, сколько я ее связываю.

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете использовать off() или unbind() функцию jQuery, чтобы удалить прослушиватель событий на кнопке. Это будет работать, вместо вашего использования click(false)

 $('#nextStage').hide().unbind("click");
 $('#playRound').hide().unbind("click");
...