Временно отключите следующую / предыдущую кнопку (ссылку) при нажатии в плагине jQuery Cycle (не обязательно проблема цикла jquery) - PullRequest
1 голос
/ 04 ноября 2011

Мне нужно, чтобы ссылка не нажималась, скажем, на 2 секунды.

Вот пример http://jsbin.com/orinib/4/edit

Когда вы смотрите на режим рендеринга, вы видите следующие и предыдущие ссылки.Когда вы нажимаете дальше, он скользит с хорошим переходом.Однако, если вы нажмете несколько раз, переходного типа не будет, что и ожидается.Но мой вопрос: как я могу предотвратить переход по следующей ссылке в течение примерно 2 секунд (или сколько времени потребуется для перехода), чтобы не важно, какой переход произойдет.Это то, что я пытался использовать, но не сработало:

function(){
var thePreventer = false;
$("#next").bind($(this),function(e){
    if(!thePreventer){
        thePreventer = true;
        setTimeout(function(){
            thePreventer = false;
        }, 2000);
    }else{
        e.preventDefault();
    }
});

}

Что я получил отсюда "Отключить" ссылку временно при нажатии? Iсчитать.Я считаю, что я не могу добиться этого эффекта с этим кодом (хотя он работает на других ссылках).Я полагаю, что это связано с тем, что цикл-плагин получил эту ссылку, и я понимаю, что я должен привязать / подключить эту функциональность плагина.Обратите внимание: этот код может не работать. Я просто использовал его, чтобы показать, что я пробовал его, и он не работал, вы можете использовать его повторно, если вам нужно или дать мне свой собственный материал.

Пожалуйста, помогите, еслиВы можете.

РЕДАКТИРОВАТЬ : Как Мртшерман предложил этот простой, но элегантный ОТВЕТ : http://jsfiddle.net/LCWLb.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Посмотрите на страницу параметров цикла .Есть несколько способов сделать это.Я хотел бы рассмотреть возможность использования события пейджера onPrevNextEvent.Вы можете назначить функцию обратного вызова.

$('#slideshow').cycle({ 
    pager:  '#nav', 
    onPrevNextEvent: function(isNext, zeroBasedSlideIndex, slideElement)  { 
        //disable controls
    },
    after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
        //reenable controls
    }
});
0 голосов
/ 04 ноября 2011

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

$.fn.extend({
    delayClick: function(callback) {
        this.bind('click', function(e) {
            $self = $(this);
            if( $self.hasClass('disabled') ) {
               $('#log').append('<p>click prevented on '+$self.attr('id')+'</p>');
            } 
            else {
               $self.addClass('disabled');
               callback.call(this, [arguments]);
               setTimeout(function() {
                   $self.removeClass('disabled');
               }, 1000);
            }
            return false; 
        });
    } 
});
...