2014-09-04 5 views
1

Этот скрипт запускается только один раз, когда страница загружается. Страница загружена, щелкните ссылку, данные пришли. Нажмите ссылку еще раз, ничего. Перегрузка страницы, ссылка работает и т. Д. Что не так в скрипте, почему оно срабатывает только один раз?JavaScript работает только один раз после загрузки страницы

<script> 
    $(function() { 
     $('a').click(function() { 
      $.get('ajax', function(data) { 
       $('#mydiv').html(data); 
      }); 
     }); 
    }); 
</script> 

<div id="mydiv"> 
    <a href="#">Update the div!</a>  
</div> 

По сравнению с данными в "mydiv" до и после нажатия на ссылку: , прежде чем нажать на ссылку

<div id="mydiv"> 
    <a href="#"> 
     Update the div! 
    </a> 
</div> 

после связь была cliked

<div id="mydiv"> 
    <a href="#"> 
      Update the div! 
      <!--Here is the data that came from.--> 
    </a> 
</div> 
+6

Вы заменяющий 'Ā' элемент, который вы положили обработчик щелчка на, так событие 'click' никогда не будет запускаться снова, потому что массив в javascript статичен. – RevanProdigalKnight

+3

Попробуйте '$ (document) .on ('click', 'a', function() ...'. Он называется делегированием событий и позволяет связывать события с элементами, которые еще не существуют. – blex

+0

@blex, thanks, это решение – andy007

ответ

3

Поскольку вы переписываете тег a, который вы прикрепляли cl ick, вам нужно будет повторно запустить код, который снова присоединяет событие click. Или вы могли бы использовать делегирование событий как blex предлагает:

$(document).on("click", "a", function(){ 

} 
1

Благодаря динамически создаваемые a вы должны использовать:

$(document).on("click", "a", function() { 
Смежные вопросы