Вход

Просмотр полной версии : функция внутри Live() срабатывает после второго клика


Ad1r
09.08.2011, 12:25
День добрый!

Появилась необходимость использовать плагин fancybox у подгруженных аяксом элементов.

Пишу следующий код
$('.get_request').live('click', function () {
$(this).fancybox({
'width' : '75%',
'height' : '75%',
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'ajax',
'hideOnOverlayClick': false
})
return false;
});


<a href="/by/ajax/" class="get_request">Показать окно</a>

Проблема заключается в том, что окно появляется только после второго нажатия на элемент с классом get_request. А нужно чтобы сразу после первого нажатия срабатывало, подскажите как решить эту проблему?

walik
09.08.2011, 13:16
Так без события клик делается:

$('.get_request').fancybox({
'width' : '75%',
'height' : '75%',
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'ajax',
'hideOnOverlayClick': false
});

Ad1r
09.08.2011, 13:25
Так без события клик делается:...


Тогда как быть с контентом который подгружается динамически?
При первой загрузке страницы такой скрипт подходит, но стоит перегрузить контент (ajax) как все ссылки с классом get_request перестают вызывать fancybox окно.

devote
09.08.2011, 13:27
дык назначь заного так как указал walik

Ad1r
09.08.2011, 13:37
в смысле, продублировать этот кусок куда в тот шаблон который динамически подгружается?

devote
09.08.2011, 13:39
ну после того как подгрузишь новые теги и т.д. потом конечно же после того как поместишь их в DOM вызови этот код.

walik
09.08.2011, 13:51
Типа такого:

$.ajax({
url: 'url.php',
success: function(data) {
$('body').append(data);
$('.get_request').fancybox({ //... и т.д.
}
});

Ad1r
09.08.2011, 14:11
решение нашел тут: http://code.google.com/p/fancybox/issues/detail?id=18
47 комментарий