В вашем примере кода вы закрываете функцию-оболочку после того, как span добавлен в тело. Если вы удалите строку })
, ваш код будет работать нормально:
(function (){
$('body').append('<span class="test">test</span>');
// }) <- remove this line
$('.test').click(function(){
console.log(this);
});
})();
Поскольку другие люди уже ответили, вы можете создать цепочку в jQuery, чтобы вы могли выполнить любое из этих действий, чтобы получить тот же результат:
function someFunction() {
console.log(this);
}
// work from the span and attach a direct handler
$('<span class="test">test</span>').on('click', someFunction).appendTo('body');
// work from the body attaching direct handlers
$('body')
.append('<span class="test">test</span>')
.find('.test')
.on('click', someFunction);
// work from the body attaching a delegate handler
$('body')
.append('<span class="test">test</span>')
.on('click', '.test', someFunction);