JQuery AJAX вызов по ссылке, загруженной с помощью AJAX - PullRequest
1 голос
/ 31 марта 2010
//deep linking 

$("document").ready(function(){
    contM = $('#main-content');
    contS = $('#second-content');
    $(contM).hide();
    $(contM).addClass('hidden');
    $(contS).hide();
    $(contS).addClass('hidden');
    function loadURL(URL) {
        //console.log("loadURL: " + URL);
        $.ajax({ url: URL, 
                type: "POST",
                dataType: 'html',
                data: {post_loader: 1},
                success: function(data){
                    $(contM).html(data);
                    $(contM).animW();
                    }
        });
    }

    // Event handlers
    $.address.init(function(event) {
        //console.log("init: " + $('[rel=address:' + event.value + ']').attr('href'));
    }).change(function(event) {
        $.ajax({ url: $('[rel=address:' + event.value + ']').attr('href'), 
                type: "POST",
                dataType: 'html',
                data: {post_loader: 1},
                success: function(data){
                    $(contM).html(data);
                    $(contM).animW();
        }});
        //console.log("change");
    })

    $('.update-main a').live('click', function(){
        loadURL($(this).attr('href'));
    });

  $(".update-second a").live('click', function() {
    var link = $(this);
        $.ajax({ url: link.attr("href"), 
                dataType: 'html',
                data: {post_loader: 1},
                success: function(data){
                    $(contS).html(data);
                    $(contS).animW();
        }});
  });

});

Я использую jquery и плагин 'адреса', чтобы загружать контент с помощью ajax и поддерживать нумерацию страниц. Проблема, которую я имею, состоит в том, что некоторый контент загружается ссылками, которые предназначены для загрузки контента во вторичное окно.

Я использую метод .live (), чтобы позволить jquery прослушивать новые ссылки, загруженные в первичный контент div.

Это работает до тех пор, пока метод .ajax () не будет вызван для этих свежих ссылок, загруженных ajax, где метод начинается, но следует по исходной ссылке до получения данных. Я предполагаю, что проблема в сценариях на стороне клиента, но это может быть проблема с вызовом на сервер. Я использую цикл WordPress для анализа URL-адреса и создания HTML-кода, загруженного с помощью jquery.

Спасибо за любые советы!

1 Ответ

4 голосов
/ 31 марта 2010

Проблема в том, что когда вы нажимаете на <a>, ваш браузер говорит: «Привет! ) вот так:

$('.update-main a').live('click', function(){
    loadURL($(this).attr('href'));
    return false;
});

$(".update-second a").live('click', function() {
  var link = $(this);
    $.ajax({ url: link.attr("href"), 
            dataType: 'html',
            data: {post_loader: 1},
            success: function(data){
                $(contS).html(data);
                $(contS).animW();
    }});
    return false;
});

Альтернативный формат:

$('.update-main a').live('click', function(e){
    loadURL($(this).attr('href'));
    e.preventDefault();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...