[英]jQuery Issue: functions won't work on newly created HTML element
我有两个函数:一个在单击按钮时创建一个新的<textarea>
,另一个函数在单击<textarea>
(或模糊,更改等)执行操作。第二个函数根据以下内容选择元素:类名。 似乎第二个功能仅适用于加载页面时存在的那些匹配元素,但不会在任何新创建的<textarea>
元素上激活。 谁能弄清楚为什么以及如何解决这个问题? 您将在下面找到代码。 谢谢。 -杰克
$('#add').click(function() {
$(this).before("<textarea class='test'></textarea>")
})
$('.test').blur(function () {
alert('just a test')
})
jQuery将操作分配给使用.test类标记的元素时,您创建的textarea不在周围。 您将需要live()函数来按需进行此工作。
$('.test').live('blur', function () {
alert('just a test')
});
现在,任何带有.test标记的元素都将自动在模糊时绑定指定的函数,无论何时创建。
您可以直接绑定它:
$('#add').click(function() {
$(this).before("<textarea class='test'></textarea>").prev().blur(function () {
alert('just a test');
});
});
或者使用jQuery的.delegate()
方法将处理程序放置在#add
的父#add
。
$('#add').click(function() {
$(this).before("<textarea class='test'></textarea>")
}).parent().delegate('.test','blur',function() {
alert('just a test');
});
与使用.live()
相比,这是一种更有效的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.