jQuery问题:函数不适用于新创建的HTML元素

时间:2010-11-11 19:44:57

标签: javascript jquery html jquery-selectors

我有两个功能:一个用于在单击按钮时创建新<textarea>,另一个用于在单击<textarea>时执行操作(或模糊,更改等)第二个函数根据类名选择元素。似乎第二个函数仅适用于加载页面时存在的匹配元素,但它不会在任何新创建的<textarea>元素上激活。谁能弄清楚为什么以及如何解决这个问题?你会在下面找到代码。谢谢。 --Jake

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>")
})

$('.test').blur(function () {
    alert('just a test')
})

2 个答案:

答案 0 :(得分:5)

您创建的textarea当时jQuery将操作分配给标记为.test类的元素。您需要live()函数才能使其按需工作。

$('.test').live('blur', function () {
    alert('just a test')
});

现在,任何标记为.test的元素都会自动绑定模糊的指定函数,无论它何时被创建。

答案 1 :(得分:1)

您可以直接绑定它:

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>").prev().blur(function () {
        alert('just a test');
    });
});

或者使用jQuery's .delegate() method将处理程序放在#add的父级上。

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>")
}).parent().delegate('.test','blur',function() {
    alert('just a test');
});

这比使用.live()更有效。