Щелчок триггера Fancybox

Я пытаюсь заставить fancybox запускаться, если хэш доступен в URL-адресе, проблема в том, что я использовал разные методы, некоторые из которых взяты здесь из stackoverflow, возвращают «c недоступен» в консоли ошибок в firefox. сайт, на котором я пытаюсь это сделать, можно найти здесь http://rojava.se/om/#infor. Вся помощь приветствуется

методы, которые я пробовал: Как создать прямую ссылку на любой модная коробка

    <script type="text/javascript">
var thisHash = window.location.hash;
$(document).ready(function() {
 if(window.location.hash) {
  $(thisHash).fancybox({
    padding: 0
    // more API options
  }).trigger('click');
 }
 $('.fancylink').fancybox({
    padding: 0
    // more API options
 });
}); // ready
</script>

Второй метод: Fancybox не срабатывает при $ (elem).click(), но при реальном клике?

jQuery('a[href="http://hallarna.se/wp-content/gallery/2013/spoksonatenloggaliten.jpg"]').trigger('mousedown').trigger('click');

person Breezer    schedule 07.09.2013    source источник
comment
Ваш код идеален, проверьте, срабатывает ли окно предупреждения   -  person SarathSprakash    schedule 07.09.2013
comment
хорошо, какой фактический код вы используете прямо сейчас? trigger внутри метода .ready()?   -  person JFK    schedule 08.09.2013
comment
@JFK да, это внутри готовой функции, как видно из кода spirar   -  person Breezer    schedule 08.09.2013
comment
@sara все работает, ждите триггера fancybox   -  person Breezer    schedule 08.09.2013


Ответы (1)


Вы должны сделать две вещи:

1). Измените код триггера :

В настоящее время вы используете этот триггер:

var thisHash = window.location.hash;
if(window.location.hash) {
    $(thisHash).trigger('mousedown').trigger('click');      
}

Но вы сказали себе, что пробовали решение этого сообщения Как создать прямую ссылку на любой ящик fancybox, поэтому ваш код должен выглядеть так:

var thisHash = window.location.hash;
if(window.location.hash) {
    $(thisHash).fancybox().trigger('click');        
}

потому что селектор #infor не привязан к fancybox (v1.3.4), поэтому вам нужно bind его, прежде чем запускать click.

2). Вызовите код триггера ПОСЛЕ инициализации fancybox.

Все еще не работает? это проблема подъема. Ваш код триггера в настоящее время находится в разделе <head> вашего документа, НО файл fancybox.js вызывается внизу страницы, поэтому даже изменение кода, как предложено выше, не сработает, потому что fancybox не был инициализирован.

Поместите свой код после вызова и инициализации fancybox и перед закрывающим тегом </body>, например:

<script type='text/javascript' src='http://rojava.se/wp-content/plugins/easy-fancybox/fancybox/jquery.fancybox-1.3.5.pack.js?ver=1.5.5'></script>
<script type='text/javascript' src='http://rojava.se/wp-content/plugins/easy-fancybox/jquery.easing.pack.js?ver=1.3'></script>

<script type="text/javascript">
jQuery(document).on('ready post-load', easy_fancybox_handler );
jQuery.noConflict();
(function($) {
  $(function() {
    $('#footbuttoncontainer ').click(function() {
      container = $('#footcontentcontainer');
      if(container.height() > 20){
        $('#footcontentcontainer').animate({height:"0"}, 1000);
      } else {
        $('#footcontentcontainer').animate({height:"26vmin"}, 1000);
      }
    });
    var thisHash = window.location.hash;     
    if(window.location.hash) {
      $(thisHash).fancybox().trigger('click');
    }
  });
})(jQuery);
</script>
</body>

Уведомление Я переместил весь ваш блок кода сразу после инициализации fancybox.

Теперь посмотрите, как он работает с hash, включенным в URL:

http://www.picssel.com/playground/jquery/rojava.html#infor

person JFK    schedule 11.09.2013
comment
если бы попытался связать его, но я думаю, что ты прав в порядке вещей - person Breezer; 13.09.2013