2015-01-20 5 views
-1

У меня возникла проблема с действием «click» для нового элемента, созданного функцией jQuery, но это не работает.Функция не работает после добавления нового элемента

Я создал JSFiddle для этой ссылки (JSFiddle), но он не работает отлично, потому что я не могу вызвать запрос Ajax в JSFiddle.

У меня есть эти две кнопки,

<input type="button" onclick="invia('SIC-034031','', 's');" value="AGGIUNGI" style="height: 20px; width: 110px; background-color: #A5EFC5 ; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 12px; background-repeat: no-repeat; background-position: left center;" id="iscriviSIC-034031" class="pulsanteIscrizioni" name="xaggiorna"/>&nbsp; 
<input type="button" onclick="invia('SIC-034031','R', 's');" value="RISERVA" style="height: 20px; width: 110px; background-color: #F00000; color: #FFFFFF; font-family: Arial,Helvetica,sans-serif; font-size: 12px; background-repeat: no-repeat; background-position: left center;" id="iscriviRSIC-034031" class="pulsanteIscrizioni" name="xaggiorna"/> 

При вызове функции Ajax в первый раз, кнопка один ответ с этим выход:

OK;I;SIC-034031 

Кнопка два используется только для удаления. Создается кнопка.

<input id="iscriviSIC-034031" class="pulsanteIscrizioni" type="button" name="xaggiorna" style="height: 20px; width: 110px; background-color: #03F; color: #FFF; font-family: Arial,Helvetica,sans-serif; font-size: 12px;" value="TOGLI" onclick="invia('SIC-034031','');"> 

При нажатии этой новой кнопки Аякса функция возвращает это,

OK;C;SIC-034031;; 

Кнопка один уходит и кнопка два возвращается. Теперь есть проблема, если я нажимаю на первую кнопку, все работает. Если я нажму на вторую кнопку, это не сработает.

Вы пытаетесь помочь мне найти проблему, пожалуйста?

Спасибо;)

+0

Я сомневаюсь, что кто-то может помочь, если вы не разместите свой соответствующий код. Вы просто поместите некоторый html, и мы ничего не знаем о ваших аякс-вызовах и javascript. – Ozan

+2

События не волшебным образом добавляются к новым элементам. http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements. Таким образом, вы добавляете новые кнопки и ожидаете, что событие, прикрепленное к документу, готово для его применения? – epascarello

+0

Я поместил свой код в ссылку JSFiddle ... Я написал это в своем посте ... – Swim89

ответ

7

JQuery знает только из элементов страницы, в то время, что он работает, так что новые элементы, добавленные в DOM являются непризнанным JQuery. Для борьбы с этим используйте event delegation, пузырящиеся события из недавно добавленных элементов до точки в DOM, которая была там, когда jQuery выполнялся при загрузке страницы. Многие люди используют document как место, где можно поймать пузырьковое событие, но не обязательно идти так высоко в дерево DOM. В идеале you should delegate to the nearest parent that exists at the time of page load.

$(".pulsanteIscrizioni").on("click", function() 

- это то, что у вас есть. Измените его на -

$(document).on("click", '.pulsanteIscrizioni',function() 
+0

Спасибо! Является идеальным решением: Я попробовал $ (input) .on («click», «.pulsanteIscrizioni», function() , но не работает. Теперь, с «документом», все работает! Спасибо! – Swim89

+1

Поздравляем с 10k btw ;-) Я считаю, что кто-то, возможно, имел какое-то отношение к этому ;-) –