Во-первых, помните, что на странице может быть только один #delete
идентификатор. Если их больше одного, у вас будут проблемы, и вы должны сделать это классом .delete
.
Если элемент #delete
отсутствует при загрузке страницы (динамический), вы можете использовать .live()
, который позаботится о том, чтобы обработать событие для вас, независимо от того, добавляете ли вы элемент.
$('#delete').live('click', function(){
...
});
Но учтите, что все равно вызовет событие и на .day-main-diary
.
Еще одним вариантом было бы вызвать .delegate()
на .day-main-diary
(до тех пор, пока он существует, когда загружается страница). Это похоже на .live()
, но более локализовано.
$('.day-main-diary').delegate('#delete', 'click', function() {
...
});
Это также вызовет click
на .day-main-diary
. Не уверен, каково ожидаемое поведение.
Еще одним вариантом будет проверка e.target
клика в обработчике .day-main-diary
кликов. Если это #delete
, то делай одно, если нет - делай другое.
$('.day-main-diary').click(function( e ) {
if(e.target.id === 'delete') {
// run code for the delete button
} else {
// do something else
}
});
В противном случае, все еще предполагая, что #delete
является динамическим, вы можете связать .click()
, когда создадите его.
$('<span id="delete">delete</span>').click(function( e ) {
// your code
// uncomment the line below if you don't want the
// click event to fire on .day-main-diary as well
// e.stopPropagation()
})
.appendTo('day-main-diary');