после вызова ajax - $ (document) .ready () ;? - PullRequest
1 голос
/ 07 июня 2011

У меня проблема. это то, что у меня на странице где-то в шапке

 $(document).ready(function(){
       $(".ajax").click(function(e){
       var url = $(this).attr("href");
       var url = url.split("##/");

       if (!url[1]){url[1]=" ";}
       var page = "http://<?php echo $_SERVER[SERVER_NAME]; ?>page.php?ajax=1&what="+url[0]+url[1];
       $("#content").load(page);

       var kkk = 'Asdasdasd';
       });
 });

так, после нажатия на <a href="##/new_page" class="ajax">new</a>, содержимое заполняется этим:

<script> alert(kkk); </script>
<a href="##/old_page" class="ajax">old page</a>

Однако предупреждение не учитывается, так как новая страница НЕ видит kkk, и ни одна из ссылок, которая работала на исходной странице, не работает. Почему?

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Чтобы ссылка работала после ее повторной загрузки, вам, вероятно, нужно живое событие.Это будет отслеживать любые новые объекты с классом ajax, а не только те, которые существуют в момент загрузки исходного документа.И если вам нужно настроить что-то еще, что обычно было бы внутри готового документа, поместите это в анонимную функцию в качестве второго параметра в load(), поскольку в противном случае загрузка нового контента не гарантируется.Например:

   $(".ajax").live('click', function(e){
   var url = $(this).attr("href");
   var url = url.split("##/");

   if (!url[1]){url[1]=" ";}
   var page = "http://<?php echo $_SERVER[SERVER_NAME]; ?>page.php?ajax=1&what="+url[0]+url[1];
   $("#content").load(page, function () { var kkk = 'Asdasdasd'; });

   });

Или, как указывает @Levi, вызов .delegate будет выполнять то же самое, хотя и будет немного менее затратным: $('content').delegate('.ajax', 'click', function() (...)

2 голосов
/ 07 июня 2011

Переменная kkk является включенной в область действия документа функция . Вместо этого переместите его за пределы этой функции:

var kkk = '...';

$(document).ready(function () {
    ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...