РЕДАКТИРОВАТЬ: Не уверен, почему .click(function() {...});
не работает для вас. Вам нужно будет предоставить больше кода, чтобы узнать, что не так.
Прежде чем использовать .live()
, вы должны подумать, подойдет ли вам .delegate()
. Это похоже на .live()
, но оно ограничено определенной частью страницы и поэтому более эффективно.
Предполагая, что элемент edit-entry
присутствует при загрузке страницы, поместите его где-нибудь в функцию .ready()
.
$("#edit-entry").delegate('.d-category', 'click', function() {
$(this).html('<p>example html</p>');
});
Затем удалите присвоение обработчика из вашего .load()
обратного вызова.
РЕДАКТИРОВАТЬ: Я неправильно указал, что вам нужно .find()
элементы в возвращаемых данных. Это неправильно с .load()
.
Проблема, скорее всего, заключается в том, что событие .focus()
помещается не в элемент input
, или .html()
вызывается в элементе input
.
Кроме того, вам не хватает ни одной кавычки после <p>example html</p>
. Я предполагаю, что это просто опечатка.
Оригинальный ответ
Элементы .d-category
в загружаемых данных? Если это так, вам нужно .find()
их в этих данных.
// Reference the data returned --------------------v
$("#edit-entry").load("/edit/", { id:id }, function( data ){
// Find the .d-category elements in the data
$(data).find(".d-category").focus(function(){
$(this).html('<p>example html</p>');
});
});
Мне было бы любопытно узнать, что это за элементы. .focus()
обычно используется для input
элементов, поэтому я не уверен, почему вы бы назвали .html()
.
И, не зная структуры HTML data
, я должен указать, что вам может потребоваться .filter()
вместо (или вместе с) .find()
, если элементы .d-category
находятся в корне data
.