Недоступен элемент после append
Здравствуйте! Такая ситуация, с помощью javascript добавляю на страницу элемент div с определенным классом, при нажатии на который должно выскакивать alert сообщение. Ситуация такая, если элемент с данным классом загружается со страницой, то при нажатии на него сообщение показывается, а если элемент добавлен с помощью append то вывод сообщения не работает. Подскажите, в чем может быть причина.
$(document).ready(function(){ $('button').click(function(){ alert('ok'); }); $('add').click(function(){ $('container').append('<div class="button"></div>'); }); }) |
ты сначала вешаешь обработчик, а потом добавляешь элемент. В JS тоже все последовательно.
$(document).ready(function(){ $('add').click(function(){ $('container').append('<div class="button"></div>'); $('button').click(function(){ alert('ok'); }); }) }); |
Fabio,
ставьте клик с помощью on потом добавляйте новые элементы когда захотите и для классов точку незабывайте |
Цитата:
|
AfraidAlex, если два раза нажать add то на первую кнопку будет навешано два обработчика сразу, и так далее кри каждом клике. Как вариант - $('button:last')
|
$(function(){ $('.button').live('click', function(){ alert('ok'); }); $('add').click(function(){ $('container').append('<div class="button"></div>'); }); }) |
Цитата:
|
рони, можно и on, но я предпочитаю live, так как особой разницы не вижу. Или есть большие сходства?
|
Цитата:
Во-вторых, через on можно назначить элемент-обработчик, тогда как в live жестко вшит document. В большинстве случаев это излишне и нужен более специфический элемент. В-третьих, при навешивании live() делается лишняя работа по поиску элементов, совпадающих с селектором. |
danik.js, теперь буду знать :thanks:
|
Часовой пояс GMT +3, время: 09:01. |