Обновление 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, время: 16:29. |