Перепривязать событие нажатия кнопки live () после использования die ()? - PullRequest
0 голосов
/ 01 декабря 2011

Мне не удалось решить мою проблему с поиском в стеке. У меня есть функция live () ниже. Вы можете видеть, как я хочу остановить повторное нажатие кнопки во время работы функции, а затем выполнить повторную привязку Кнопка перестает связываться, но больше не связывается ...: S

$('.control-left, .prevActive').live('click',function(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click');
    }

});

Ответы [ 3 ]

3 голосов
/ 01 декабря 2011

Нет необходимости отменять привязку и повторную привязку, просто используйте флаг:

var running = false;
$('.control-left, .prevActive').live('click',function(){
    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active' && !running){ 
        running = true;
        moveSlider('left');
        running = false;
    }
});
1 голос
/ 01 декабря 2011

Вы не передаете никакой функции .live .. попробуйте это:

$('.control-left, .prevActive').live('click',function hello(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click', hello);
    }

});
1 голос
/ 01 декабря 2011

Ваша последняя строка кода ничего не связывает с обработчиком кликов.Вы должны связать функцию

$('.control-left, .prevActive').live('click', function () { code here });

В вашей ситуации вы, вероятно, захотите сделать что-то подобное

var myspecialclickfunction = function(){

  var firstSlide = $('.slider li:first-child');

  if(firstSlide.attr('class') != 'active'){   
      $('.control-left, .prevActive').die('click');   
      moveSlider('left');
      $('.control-left, .prevActive').live('click', myspecialclickfunction);
};

$(document).ready(function () {
  $('.control-left, .prevActive').live('click',myspecialclickfunction);
});

Также jQuery 1.42 - 1.6x, вы должны использовать

в jquery 1.7 +

...