2013-10-10 2 views
0

У меня есть <select>, и каждый вариант загружает изображение в div. Выход загрузчика AJAX изображения являетсяFancybox изображения, загруженные ajax

<a class="fancybox" href="/useruploads/types/4.jpg" title="Columnlist #1"> 
    <img style="max-width:300px" src="/useruploads/types/4.jpg" alt="Columnlist #1"> 
</a> 
<h6>Columnlist #1</h6> 

И это Вставляется в <div class="thumbnail"></div>

Так что я попытался с помощью следующей JavaScript

$('body').delegate('a.fancybox', 'click', function() { 
    $(this).fancybox(); 
    console.log($(this)); 
    return false; 
}); 

И это входит в <a> элемент, но изображение не получает fancyboxes (Когда я удаляю return false, url для нагрузок)

Я добавил jquer y (1.9.1), fancybox javascript (2.1.5) и fancybox css, а все файлы загружаются в браузер в порядке.

В консоли нет ошибок.

[EDIT] я изменил к Highslide и теперь он работает отлично

+0

если вы используете FancyBox v2.1.5, то вам не нужно '.delegate()' или '.on()' просто привязать селектор '.fancybox' к fancybox нормально, и он будет работать для любых существующих или будущих (добавленных ajax) элементов. – JFK

ответ

0

По JQuery 1.7, .delegate() был заменен .on() метод. Для более ранних версий, однако, остается наиболее эффективным средством для использования делегирования события .

Использование .on()

Синтаксис

$(elements).on(events, selector, data, handler); 

Ваш код стал

$('body').on('click','a.fancybox' ,function() { 
    $(this).fancybox(); 
    console.log($(this)); 
    return false; 
}); 
+0

Теперь я переключился на .on, но он все еще не работает. – Martin

+0

@Martin - это ваш сайт в прямом эфире? –

+0

fancybox v2.1.5 не нуждается в '.delegate()' или '.on()'. – JFK

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