Переключение функций по нажатию кнопки

0

Пожалуйста, см. Ниже код для переключения между двумя функциями при нажатии кнопки. Но кнопка становится невидимой после нажатия и вторая функция всегда вызывается. Зачем!?

        $('#btnClick').click(function () {
               $(this).toggle(
                    //$('tr').toggleClass("highlight");
                    function () {
                        alert("Function one called");
                    },
                    function () {
                        alert("second function called");
                });
        });

Благодарю!

Теги:

4 ответа

1
Лучший ответ

Thats, потому что toggle (функция, функция...) удаляется в 1. 9+, что вы должны сделать, это что-то вроде этого

var tog = false;
$('#btnClick').click(function () {
    tog = !tog;
    if (tog) {
        alert("Function one called");
    } else {
        alert("second function called");
    }
});
  • 2
    Почему бы не tog = !tog; ? Намного легче читать (и то, что вы сделали, было неверно;)
  • 2
    Не знал, что ты мог бы сделать это, офигенно ты :)
Показать ещё 1 комментарий
1

Если вы предпочитаете, без глобальных переменных

$('#btnClick').click(function () {
    var clicked = $(this).data('clicked') || 0;
    if (clicked % 2 == 0) {
        alert("Function one called");
    } else {
        alert("second function called");
    }
    $(this).data('clicked', clicked + 1);
});
  • 0
    +1, но почему бы не использовать bool? Также вы забыли обновить сохраненные данные.
  • 0
    Я стараюсь минимизировать использование глобальных переменных в каждом коде;)
Показать ещё 2 комментария
0

Демо-версия

попробуйте с условием If, и вы получите как требование

HTML:

<input type="button" id="btnClick" value="button 1"/>
<input type="button" id="btnClick1" value="button 2"/>

JQuery:

var i=true;
$('#btnClick').click(function () {
    i= !i;
    if (i) {
        alert("2nd function called");
        $('#btnClick1').toggle();
    } else {
        alert("1st function called");
        $('#btnClick1').toggle();
    }
});
-1
$('#btnClick').toggle(function () {
                        alert("Function one called");// work on first click
                    },
                    function () {
                        alert("second function called");// work on second click

        });

ссылка toggle

обновление для новой версии jquery 1.9 + toggle удаляется в новой версии

var stat= 0;
$('#btnClick').click(function () {
    stat= !stat;
    if (stat) {
        alert("Function one called");
    } else {
        alert("second function called");
    }
});
  • 0
    почему downvote downvoter
  • 0
    Возможно, потому что эта версия toggle давно устарела и была удалена в v1.9. Кроме того, документы, на которые вы ссылаетесь, не имеют ничего общего с этой старой удаленной версией toggle , которая описана здесь .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню