2015-12-31 3 views
0

Редактировать: Вот jsfiddle. Я пытаюсь получить второе изображение (птица), чтобы показывать Toggle и Close на кнопке helper, так как у него есть только одно изображение в галерее.Сменить кнопки на кнопке кнопки fancybox, если одно изображение

Я пытаюсь удалить кнопки Prev, Play и Forward на кнопке helper, если есть только одно изображение.

$(document).ready(function() { 
    $('.fancybox-buttons').fancybox({ 
     helpers: { 
      buttons: { 
       if (this.group.length == 1) { 
        tpl: '<div id="fancybox-buttons"><ul style="width:74px"><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>', 
       } else { 
        tpl: '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous"></a></li><li><a class="btnPlay" title="Start slideshow"></a></li><li><a class="btnNext" title="Next"></a></li><li><a class="btnToggle" title="Toggle size"></a></li><li><a class="btnClose" title="Close"></a></li></ul></div>', 
       } 
      }, 
     }, 
    }); 
}); 

Очевидно, я понятия не имею, что я делаю. Это дает мне «SyntaxError: отсутствующий формальный параметр» в строке «if (this.group.length == 1)». У кого-нибудь есть предложения?

+0

Вы будете иметь чтобы показать еще немного вашего кода (соответствующий HTML). Является ли '.fancy-buttons' именем класса, которое вы используете для оболочки обложек fancybox? – segFault

+0

Мой html is

. Использование хелпера кнопки jquery.fancybox-buttons.js показывает, что у меня есть, но без операторов if. Я получаю «tpl», я хочу без утверждений if, я просто пытаюсь добавить условие. Извините, я понимаю, что у меня над головой. – sixin

ответ

0

Синтаксическая ошибка вызвана условным утверждением if ... else, они не могут существовать внутри объекта таким образом.

Вы могли бы попробовать что-то вроде этого, хотя:

$(document).ready(function() { 
    var fancyTpl = $('.fancybox-buttons').length === 1 
     ? '<div id="fancybox-buttons"><ul style="width:74px"><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>' 
     : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous"></a></li><li><a class="btnPlay" title="Start slideshow"></a></li><li><a class="btnNext" title="Next"></a></li><li><a class="btnToggle" title="Toggle size"></a></li><li><a class="btnClose" title="Close"></a></li></ul></div>'; 

    $('.fancybox-buttons').fancybox({ 
     helpers: { 
      buttons: { 
       tpl: fancyTpl 
      }, 
     }, 
    }); 
}); 

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

$('.fancybox-buttons').fancybox({ 
    loop: false, 
}); 

Reference to fancyBox options

+0

Спасибо. Это лучше. Теперь я не получаю ошибок. Он будет устанавливать переменную только на то, что у меня есть для второго: даже если есть только одно изображение. Я пойду еще раз, чтобы узнать о вашем коде и обновить его позже. – sixin

+0

Теперь я вижу яснее. Он должен оценивать длину по общим атрибутам «rel». Он получает количество на сколько изображений у меня с одним и тем же классом. Я думаю, может быть, мне нужно что-то сделать с помощью afterLoad fancybox или beforeShow, но я просто не знаю, как обновить «tpl» оттуда. Вернемся к этому .. – sixin

+0

Я не мог никуда убрать с удалением кнопок при условии. Цикл: false, по крайней мере, отключает их, поэтому я пошел с этим. Спасибо за помощь. – sixin

-1

Если бы я мог видеть весь документ, возможно, я могу помочь вам больше. Но, возможно, проблема в .length. try .length() или .length() < = 1 или комбинации :)

+0

Это еще недействительный синтаксис. Вы не можете иметь условные утверждения, смешанные внутри такого объекта. – segFault

+0

Извините, я добавил jsfiddle. http://jsfiddle.net/1f5uqgb9/14/ – sixin

Смежные вопросы