Недоступен элемент после 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, время: 16:06. |