Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.12.2014, 18:24
Интересующийся
Отправить личное сообщение для Gertasreg Посмотреть профиль Найти все сообщения от Gertasreg
 
Регистрация: 17.10.2013
Сообщений: 17

Обновление 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 который был в блоке
объясните пожалуйста из за чего оно так работает?
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2014, 19:12
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Gertasreg,
Есть bind и unbind http://jquery-docs.ru/Events/
Ибо click не отключаемый обработчик
Для элементов не присутствующих пока на странице, но могущих быть в будущем лучше ставить единственный обработчик live
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2014, 19:28
Интересующийся
Отправить личное сообщение для Gertasreg Посмотреть профиль Найти все сообщения от Gertasreg
 
Регистрация: 17.10.2013
Сообщений: 17

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>
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2014, 21:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Deff
Для элементов не присутствующих пока на странице, но могущих быть в будущем лучше ставить единственный обработчик live
Deff, когда это было
http://api.jquery.com/live/
Цитата:
version deprecated: 1.7, removed: 1.9

http://api.jquery.com/on/
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2014, 22:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bes,
Упс показалось 1.2.1 (До второй не доплыл ибо моём стоит старьё
Ответить с цитированием
  #6 (permalink)  
Старый 22.12.2014, 22:51
Интересующийся
Отправить личное сообщение для Gertasreg Посмотреть профиль Найти все сообщения от Gertasreg
 
Регистрация: 17.10.2013
Сообщений: 17

Если уже нет live то как быть то?
Это че теперь bind и unbind ко всем элементам применять?
А что если у меня к многим клик используется?
Ответить с цитированием
  #7 (permalink)  
Старый 22.12.2014, 23:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Gertasreg
Если уже нет live то как быть то?
Это че теперь bind и unbind ко всем элементам применять?
А что если у меня к многим клик используется?
read more
Сообщение от bes
http://api.jquery.com/on/
Ответить с цитированием
  #8 (permalink)  
Старый 22.12.2014, 23:48
Интересующийся
Отправить личное сообщение для Gertasreg Посмотреть профиль Найти все сообщения от Gertasreg
 
Регистрация: 17.10.2013
Сообщений: 17

bes,
В моем случае работает так же как и обычный клик
Мне только помогает unbind сношу все клики и заново вешаю
Както тупо но работает
Ответить с цитированием
  #9 (permalink)  
Старый 23.12.2014, 21:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Gertasreg,
Там нужно указывать ближайший родительский неизменяемый элемент за всё время, с которого делегируются события
http://jquery.page2page.ru/index.php5/On
Читать про делегирование
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление объекта Date (сокращение кода) HJ90 Элементы интерфейса 4 07.09.2013 20:58
Инструмент для быстрых тестов JS кода. Obelix Общие вопросы Javascript 4 12.05.2013 18:23
Конфликтуют js скрипты в Opera romka AJAX и COMET 2 28.05.2012 15:32
Вывод кусков HTML кода с одного файла JS wlad2 Общие вопросы Javascript 16 04.01.2011 11:52
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43