Ссылка должна открываться fancybox ($ .fancybox.pos) с помощью функции клика - PullRequest
1 голос
/ 25 ноября 2011

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

var js = "jQuery.fancybox.pos("+currentImage+");";
// create a new function from the "js" string
var newclick = new Function(js);

jQuery("a.enlarge").click(newclick);

Код основан на этом ответе . я надеюсь, что jQuery.fancybox.pos(2) работает. Но в настоящее время у меня не работает функция щелчка. Что я делаю не так?

Edit:

Моя текущая настройка:

<script type="text/javascript">
  var currentImage = 0;

  function getCurrImage(carousel, state){
     currentImage = carousel.first-1;

     jQuery("a.enlarge").click(function() {
       alert(currentImage);   
       jQuery.fancybox.pos(currentImage);
     });
   }

   jQuery.noConflict();

   jQuery(document).ready(function() {
       jQuery('#mycarousel').jcarousel({
           scroll:1,
           'itemLoadCallback': getCurrImage 
       }); 
       jQuery('a[rel=example_group]').fancybox({
           'transitionIn': 'none',
           'transitionOut': 'none'
       });
   });
</script>

jQuery.fancybox.pos(currentImage); не работает. currentImage кажется правильным, но предупреждение появляется 4 раза, если кнопка была нажата 4 раза. Это значит:

нажмите 1: currentImage = 0
нажмите 2: currentImage = 1, currentImage = 1
нажмите 3: currentImage = 2, currentImage = 2, currentImage = 2
нажмите 4: currentImage = 3, currentImage = 3, currentImage = 3, currentImage = 3

Обновление:

Новая попытка:

<script type="text/javascript">
  var currentImage = 0;

function openfancy(){
   jQuery.fancybox.pos(currentImage);
}

  function getCurrImage(carousel, state){
     currentImage = carousel.first-1;

     jQuery("a.enlarge").unbind("click", openfancy);
     jQuery("a.enlarge").bind("click", openfancy);
   }

   jQuery.noConflict();

   jQuery(document).ready(function() {
       jQuery('#mycarousel').jcarousel({
           scroll:1,
           'itemLoadCallback': getCurrImage 
       }); 
       jQuery('a[rel=example_group]').fancybox({
           'transitionIn': 'none',
           'transitionOut': 'none'
       });
   });
</script>

jQuery.fancybox.pos(currentImage); все еще не работает. Есть ли шанс? Возможно, потому, что на этой странице есть несколько необычных коробок? Я также попробовал это с jQuery('.fancybox').fancybox.pos(currentImage);, но я получаю сообщение об ошибке, что это не функция.

Ответы [ 2 ]

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

Функция pos никогда не работала.Поэтому я решил использовать удаленный ответ, чтобы использовать функцию щелчка.Если пользователь нажимает на мою ссылку, он должен имитировать щелчок по картинке в галерее.

<script type="text/javascript">
    var currentImage = 0;

    function getCurrImage(carousel, state){
        currentImage = carousel.first-1;
    }

    /*jQuery.noConflict();*/

    jQuery(document).ready(function() {
        jQuery('#fancycarousel').jcarousel({
            scroll:1,
            'itemLoadCallback': getCurrImage 
        }); 
        jQuery('a[rel=example_group]').fancybox({
            'transitionIn': 'none',
            'transitionOut': 'none'
        });
        jQuery('#enlarge').click(function(){
            jQuery(".jcarousel-item").eq(currentImage).children("a").click();
        }); 
    });
</script>

Мне потребовались часы, чтобы понять это!

0 голосов
/ 25 ноября 2011

Используйте анонимную функцию:

jQuery("a.enlarge").click(function() {
  jQuery.fancybox.pos(currentImage);
});

Я не уверен, что такое currentImage.


Попробуйте также этот код:

var currentImage = 0;

$('#your_carousel').jcarousel({
  itemLoadCallback: function(carousel, state) {
    currentImage = carousel.first;
  }
});
...