unbind действительно не работает: есть ли другое решение? - PullRequest
1 голос
/ 26 февраля 2012

Я пытаюсь «остановить» действие нажатия на #mydiv, я имею в виду, если я щелкну 100 раз на #mydiv, я бы хотел, чтобы прозрачность возникала только один раз, а не 100 раз, я нашел это решение в Интернете с помощью «unbind», я думаю, что это сработало в первый раз, когда я его использовал, но теперь это не работает, это может быть простой ошибкой, но я не знаю, где на это смотреть. Я прокомментировал всю свою страницу jquery, у меня просто есть строка готового документа и эти две функции, но это не останавливает действие при нажатии:

$('#mydiv').bind('click', function() {
  $('.myclass').animate(opacity: 0.25);
});

$('#mydiv').unbind('click', function() {
    $('.myclass').animate(opacity: 0.25);
});

Большое спасибо за вашу помощь

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Используя jQuery 1.7+:

$('#mydiv').on('click', anim);

$('#mydiv').off('click', anim);


function anim() {
    $('.myclass').animate(opacity: 0.25);
}

Вы можете даже сделать:

$('#mydiv').on('click', anim);

function anim() {
    $('.myclass').animate(opacity: 0.25);
    $('#mydiv').off('click', anim);
}

или

$('#mydiv').one("click", function() {
    $('.myclass').animate(opacity: 0.25);
});

И, конечно, должно быть:

$('.myclass').animate({opacity: 0.25}, speed);
3 голосов
/ 26 февраля 2012

Просто используйте:

$('#mydiv').unbind('click');

Или

Если вы хотите, чтобы щелчок происходил только один раз, используйте one вместо:

$('#mydiv').one(function() {
  $('.myclass').animate(opacity: 0.25);
});
...