Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос по строению событий в событиях (https://javascript.ru/forum/misc/67805-vopros-po-stroeniyu-sobytijj-v-sobytiyakh.html)

jay-S 09.03.2017 11:33

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

$('#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');
}
});

});

});

рони 09.03.2017 11:38

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

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


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

destus 09.03.2017 11:39

Цитата:

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

это так себе решение или вы предложите умнее?
Вот что у вас за фантазия, чтобы самому себе придумывать задачи, которые в принципе не должны возникать при разработке Web-приложений и героических их решать? Из простого делаете сложное.

jay-S 09.03.2017 11:42

как мне сделать так чтобы события которые заложены внутри события не дублировались

destus 09.03.2017 11:50

jay-S,
а зачем событию быть вложенным внутрь другого события?

jay-S 09.03.2017 11:58

при первом клике делается добавление в участок кода html который нажимается

laimas 09.03.2017 12:04

Цитата:

Сообщение от jay-S
при первом клике делается добавление в участок кода html который нажимается

Что за глупости. А если вставляется дюжина элементов и по каждому надо щелкнуть, то .on(.. .on( ... on( ....))) и пока смерть не разлучит их?

destus 09.03.2017 12:12

Цитата:

Сообщение от jay-S (Сообщение 446805)
при первом клике делается добавление в участок кода html который нажимается

Сделай jsfiddle, и расскажи что должно происходить. Если ты думаешь, что если элемента нет в DOM, значит на него нельзя повесить событие, то это не так.

jay-S 09.03.2017 12:40

я понимаю что есть конструкция element on element function
вернее всего так и сделаю спс

laimas 09.03.2017 13:26

Цитата:

Сообщение от jay-S
я понимаю что есть конструкция element on element

Есть делегирование, а если это по каким либо причинам затруднительно или требуются данные, которые на момент вставки элементов в дерево недоступны, то следят за изменением DOM. В старых браузерах это DOMNodeInserted, а в новых доступен наблюдатель MutationObserver с отличным набором средств.


Часовой пояс GMT +3, время: 08:17.