Я имею дело с этой проблемой. Я запускаю несколько скриптов jQuery на своей странице, и все работает нормально. Проблема возникает, когда я хочу применить эти скрипты к контенту, который вызывается AJAX.
Я создал пример кода, который демонстрирует проблему.
Он состоит из 3 файлов - index.html, target.html и main.js
Index.html (только <body>
)
<body>
<script type='text/javascript' src='main.js'></script>
<div id='main'>
<button>Call Ajax</button>
<br /><br />
<a href='index.html?clicked=1'>Some link</a>
</div>
<div id='target'></div>
</body>
Target.html
<a href='index.html?clicked=1'>Some link 2</a>
Main.js
$(document).ready(function() {
$('a').live("click", function() {
if(!confirm('Are you sure?'))
return false
});
$('button').click(function() {
$.post('target.html', function(data) {
$('#target').html(data);
});
});
});
Итак, скажем, я хочу, чтобы пользователь подтверждал каждый раз, когда нажимал на тег <a>
. Я нажимаю на тег внутри #main <div>
, и он отлично работает. Я нажимаю кнопку «Call ajax», появляется ссылка, я нажимаю на нее, и подтверждение не появляется.
Итак, я решил поместить <script type='text/javascript' src='main.js'></script>
в файл target.html .
Это прекрасно работает, до того момента, когда я снова нажимаю первую ссылку (внутри #main div). Затем подтверждение появляется 2 раза вместо одного.
Я обнаружил в Интернете, что некоторые люди решают эту проблему, используя метод .live()
или $(document).ajaxComplete(function(){
, но я не смог его запустить.
Кто-нибудь может предоставить рабочее решение? Спасибо, Майк.