Галерея fancybox 2 с nextClick — щелчок по последнему изображению закрывает ее

я пробую fancybox 2, и я удалил arrows, closebutton и loop и включил nextclick. Я собираюсь супер чистый и простой в использовании.

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

я предполагаю, что ответ либо добавляет самозакрывающееся действие через класс, например:

<a class="gallery1 closeaction" href=...

но я действительно понятия не имею. я бы подумал, что такие вещи будут в демо, но я не могу найти ничего подобного.

помощь?


person user1918417    schedule 20.12.2012    source источник


Ответы (3)


Этот код, использующий обратный вызов beforeShow, должен помочь:

$(document).ready(function() {
    $(".fancybox").fancybox({
        arrows: false,
        closeBtn: false,
        loop: false,
        nextClick: true,
        beforeShow: function() {
            var groupLength = this.group.length;
            var thisIndex = this.index + 2; // index starts at "0"
            $(".fancybox-image").on("click", function() {
                if (thisIndex > groupLength) {
                    $.fancybox.close();
                } else {
                    thisIndex++;
                }
            });
        }
    }); // fancybox
}); // ready

См. DEMO.

person JFK    schedule 20.12.2012

Может быть, что-то вроде привязки клика к последнему элементу в галерее.

$('.fancylink').fancybox({
loop: false,
afterShow: function(){          
    if(this.index  == this.group.length - 1){

        $('.fancyselector').click(function(){
$.fancybox.close(); }); // or :
nextClick :false;
closeClick :true;
    }
}
});
person john Smith    schedule 20.12.2012
comment
Спасибо за ответ. что заставило последний элемент в галерее закрыться сразу, а не по клику. - person user1918417; 20.12.2012
comment
вы пробовали только nextClick :false; closeClick: правда; - person john Smith; 20.12.2012
comment
Ах, правильный обратный вызов, конечно, не afterShow, а afterLoad - person john Smith; 20.12.2012
comment
у меня все еще не работает ... может быть, что-то не так с логикой if? - person user1918417; 20.12.2012

Если вы используете fancybox вер. 3, вы можете использовать этот фрагмент кода

    $('.fancybox').fancybox({
        clickContent: function(current, event) {
            var sliderCount = $('.fancybox-infobar span[data-fancybox-count]').text();
            var sliderPosition = current.pos + 1;
            if(sliderPosition < sliderCount){
                return current.type === "image" ? "nextOrClose" : false;
            } else{
                return current.type === "image" ? "close" : false;
            }

        },
    });
person Andrew Kozoriz    schedule 29.10.2018