Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2017, 11:33
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

вопрос по строению событий в событиях
если использовать вот такую конструкцию:

$('#knopka').on('click', function() {

$('#knopka2').on('click', function() {
$.ajax({
type: 'POST',
url : '/page',
data : data,
success: function (data) {
alert('success');
}
});

});

});




то нажимая второй раз на кнопку #knopka
происходит следующее: событие привязанное к кнопке #knopka2 повторяется 2 раза, далее 3 раза и тд

что тут сделать правильно что вы подскажите умную мысль?


вот что я подумал добавить отключение события сначала кнопки 2 тогда она не будет дупликатиться скажем так

это так себе решение или вы предложите умнее?



$('#knopka2').off('click');

$('#knopka').on('click', function() {

$('#knopka2').on('click', function() {
$.ajax({
type: 'POST',
url : '/page',
data : data,
success: function (data) {
alert('success');
}
});

});

});
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2017, 11:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

jay-S,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2017, 11:39
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
вот что я подумал добавить отключение события сначала кнопки 2 тогда она не будет дупликатиться скажем так

это так себе решение или вы предложите умнее?
Вот что у вас за фантазия, чтобы самому себе придумывать задачи, которые в принципе не должны возникать при разработке Web-приложений и героических их решать? Из простого делаете сложное.
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2017, 11:42
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

как мне сделать так чтобы события которые заложены внутри события не дублировались
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2017, 11:50
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

jay-S,
а зачем событию быть вложенным внутрь другого события?
Ответить с цитированием
  #6 (permalink)  
Старый 09.03.2017, 11:58
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

при первом клике делается добавление в участок кода html который нажимается
Ответить с цитированием
  #7 (permalink)  
Старый 09.03.2017, 12:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от jay-S
при первом клике делается добавление в участок кода html который нажимается
Что за глупости. А если вставляется дюжина элементов и по каждому надо щелкнуть, то .on(.. .on( ... on( ....))) и пока смерть не разлучит их?
Ответить с цитированием
  #8 (permalink)  
Старый 09.03.2017, 12:12
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от jay-S Посмотреть сообщение
при первом клике делается добавление в участок кода html который нажимается
Сделай jsfiddle, и расскажи что должно происходить. Если ты думаешь, что если элемента нет в DOM, значит на него нельзя повесить событие, то это не так.
Ответить с цитированием
  #9 (permalink)  
Старый 09.03.2017, 12:40
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

я понимаю что есть конструкция element on element function
вернее всего так и сделаю спс
Ответить с цитированием
  #10 (permalink)  
Старый 09.03.2017, 13:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от jay-S
я понимаю что есть конструкция element on element
Есть делегирование, а если это по каким либо причинам затруднительно или требуются данные, которые на момент вставки элементов в дерево недоступны, то следят за изменением DOM. В старых браузерах это DOMNodeInserted, а в новых доступен наблюдатель MutationObserver с отличным набором средств.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление обработчика событий! Даниэль Ноубл Общие вопросы Javascript 1 23.04.2010 17:12
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 20:47
вопрос по long poll megaswin AJAX и COMET 2 27.05.2008 09:20