Как загрузить содержимое AJAX в текущее окно Colorbox?
Я ищу ответ уже три дня подряд. Дело в том, что у меня есть страница, ссылки на которую должны загружать Colorbox с контентом AJAX, который в свою очередь содержит ссылки, которые должны быть загружены в то же модальное окно Colorbox. До сих пор мне удалось заставить его работать (частично) следующим образом:
<script type="text/javascript">
$(document).ready(function(){
$("a[rel='open_ajax']").live('click', function() {
$.colorbox({
href:$(this).attr('href')
});
return false;
});
});
</script>
он загружает окно Colorbox, если я нажимаю на ссылку, но в этом окне, если я нажимаю на его ссылки, он открывает другое окно Colorbox. И я хочу, чтобы контент был загружен в пределах текущего. Оценят любые мысли. Танкс!
П. С. ссылки в главном окне:
<a title="Client Details" rel="open_ajax" href="http://localhost/client/details/123">Client Details...</a>
и ссылки в Colorbox все те же (это просто разбиение на страницы):
<a rel="open_ajax" href="http://localhost/client/details/123/1">1</a>
<a rel="open_ajax" href="http://localhost/client/details/123/2">2</a>
<a rel="open_ajax" href="http://localhost/client/details/123/3">3</a>
<a rel="open_ajax" href="http://localhost/client/details/123/4">4</a>
<a rel="open_ajax" href="http://localhost/client/details/123/5">5</a>
1 ответов
Если вам нужно загрузить содержимое в тот же Colorbox, а не открывать новый экземпляр, я бы начал с того, что контекст обработчика событий для открытия Colorbox был эксклюзивным и не подключался к элементам "open_ajax" в Colorbox.
что-то вроде этого:
<script type="text/javascript">
$(document).ready(function(){
$("a[rel='open_ajax']:not(#colorbox a[rel='open_ajax'])").live('click', function() {
$.colorbox({
href:$(this).attr('href')
});
return false;
});
});
</script>
Если выше не работает, попробуйте сделать селектор более конкретным/уникальный.
затем AJAX в новом содержимом непосредственно в Colorbox у вас уже есть открыть.
что-то вроде этого:
$('#cboxLoadedContent a[rel="open_ajax"]').live('click', function(e){
// prevent default behaviour
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
type: 'GET',
url: url,
dataType: 'html',
cache: true,
beforeSend: function() {
$('#cboxLoadedContent').empty();
$('#cboxLoadingGraphic').show();
},
complete: function() {
$('#cboxLoadingGraphic').hide();
},
success: function(data) {
$('#cboxLoadedContent').append(data);
}
});
});