Обновление js кода
Суть проблемы
есть код
<div id="scri">
<script charset='utf-8' src='/jquery-2.1.1.min.js' type='text/javascript'></script>
</div>
<script>
$(document).ready(function() {
$("#block").html('<div class="add">Добавить</div><div id="ty">Алерт</div>');
$(".add").click(function(){
var ds = "<script charset='utf-8' src='/jquery-2.1.1.min.js' type='text/javascript'><\/script>" +
"<script charset='utf-8' src='/my.js' type='text/javascript'><\/script>";
$("#scri").html(ds);
});
});
</script>
<div id="block">
</div>
и код файла my.js
$(document).ready(function() {
$("#ty").click(function(){
alert(333);
});
});
Когда кликаю на класс "add" $(".add"), в блоке $("#scri") заменяется html содержимое "подключаю 2 скрипта" после я кликаю на блок с id="ty" $("#ty") вылетает алерт все как бы идет как надо но стоит мне повторно кликнуть на $(".add") после чего опять на $("#ty") уже 2 алетра вылетает еще раз повторить предыдущие действия уже 3 алерта Оно же вроде как заменяет html, но суда по том что алертов с каждым кликом больше, оно помнит и старых html который был в блоке объясните пожалуйста из за чего оно так работает? |
Gertasreg,
Есть bind и unbind http://jquery-docs.ru/Events/ Ибо click не отключаемый обработчик Для элементов не присутствующих пока на странице, но могущих быть в будущем лучше ставить единственный обработчик live |
Deff,
этот код я написал исключительно для примера Я не как не могу понять почему если обновлять/заменять html в блоке продолжает работать код который был ранее Когда я обновляю html $("#scri").html(ds); Оно работает типа там много одинаковых js файлов
<div id="scri">
<script charset='utf-8' src='/jquery-2.1.1.min.js' type='text/javascript'></script>
<script charset='utf-8' src='/my.js' type='text/javascript'></script>
<script charset='utf-8' src='/jquery-2.1.1.min.js' type='text/javascript'></script>
<script charset='utf-8' src='/my.js' type='text/javascript'></script>
<script charset='utf-8' src='/jquery-2.1.1.min.js' type='text/javascript'></script>
<script charset='utf-8' src='/my.js' type='text/javascript'></script>
</div>
|
Цитата:
http://api.jquery.com/live/ Цитата:
http://api.jquery.com/on/ |
bes,
Упс показалось 1.2.1 (До второй не доплыл ибо моём стоит старьё |
Если уже нет live то как быть то?
Это че теперь bind и unbind ко всем элементам применять? А что если у меня к многим клик используется? |
Цитата:
Цитата:
|
bes,
В моем случае работает так же как и обычный клик Мне только помогает unbind сношу все клики и заново вешаю Както тупо но работает |
Gertasreg,
Там нужно указывать ближайший родительский неизменяемый элемент за всё время, с которого делегируются события http://jquery.page2page.ru/index.php5/On Читать про делегирование |
| Часовой пояс GMT +3, время: 13:36. |