我有两个功能:一个用于在单击按钮时创建新<textarea>
,另一个用于在单击<textarea>
时执行操作(或模糊,更改等)第二个函数根据类名选择元素。似乎第二个函数仅适用于加载页面时存在的匹配元素,但它不会在任何新创建的<textarea>
元素上激活。谁能弄清楚为什么以及如何解决这个问题?你会在下面找到代码。谢谢。 --Jake
$('#add').click(function() {
$(this).before("<textarea class='test'></textarea>")
})
$('.test').blur(function () {
alert('just a test')
})
答案 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()
更有效。