Как загрузить содержимое 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);
        }
    });

});