2013-08-02 2 views
0

Я очень новичок в JS, jQuery и JSON в целом, поэтому, возможно, что-то не так с тем, что я пытаюсь сделать здесь, и я, скорее всего, принципиально не работает. Во всяком случае, то, что я хочу сделать, это захватить все ссылки на странице, получить ответ JSON и затем соответствующим образом обновить страницу. Мой код работает, когда страница изначально загружается, но после создания нового контента любые ссылки в новом контенте не ведут себя так же, как исходные ссылки.Как я могу захватить все клики по ссылкам после загрузки страницы и добавления новых ссылок?

$(function(){ 
    $('a').click(function(){ 
     event.preventDefault(); 
     var pageUrl = $(this).attr('href'); 
     $.getJSON(pageUrl, function (page){ 
      $('#pageData').slideUp(300, function(){ 
       $(this).html(page.block).css('margin-top', '10px').slideDown(300); 
      }); 
     }) 
     .fail(function(){ 
      alert('fail no JSON'); 
     }); 
    }); 
}); 

ответ

1

Вы должны использовать делегирование событий, так как вы можете иметь дело с динамическими элементами

$(function(){ 
    $(document).on('click', 'a', function(event){ 
     event.preventDefault(); 
     var pageUrl = $(this).attr('href'); 
     $.getJSON(pageUrl, function (page){ 
      $('#pageData').slideUp(300, function(){ 
       $(this).html(page.block).css('margin-top', '10px').slideDown(300); 
      }); 
     }) 
     .fail(function(){ 
      alert('fail no JSON'); 
     }); 
    }); 
}); 
+3

Зачем ждать йота готов связать обработчик документа? – Musa