我尝试使用js在新创建的表单中调用基于元素的事件,但什么也没有发生。我应该去找个警报箱。我做错了什么?$('.add-comment').submit(function() { alert">
我使用js将表单元素添加到html文档中。例如,我正在将整个<form>
添加到表格单元格中。例如:
<form class="add-comment"><input type="submit" /></form>
我尝试使用js在新创建的表单中调用基于元素的事件,但什么也没有发生。我应该去找个警报箱。我做错了什么?
$('.add-comment').submit(function() {
alert('form submitted!');
});
谢谢。希望我解释得够好了。
发布于 2010-01-24 16:23:28
是否要在注册提交事件处理程序后添加元素?除非使用live方法添加事件,否则需要在每个新元素之后注册事件。
$('.add-comment').live('submit', function() {
alert('form submitted!');
});
这将为所有选定的图元添加事件,即使这些图元是在将来添加的。
发布于 2010-01-24 16:25:19
新创建的元素没有附加任何事件处理程序。您必须选择它们,并在添加它们之后添加事件处理程序(例如,$('.add-comment', newparent).submit(submitfunction)
)。
通常可以使用.live(eventname, function)
为现有的和将来创建的元素添加事件处理程序。然而,你不能在jQuery 1.3中使用.live('submit', ...)
,因为这些事件是在浏览器中实现的(从技术上讲,它们不会“冒泡”)。
jQuery 1.4确实支持live
对抗submit
(通过一个非常丑陋的黑客攻击)。
发布于 2010-01-24 16:29:52
如果你使用的不是jQuery 1.4,我已经写了一个关于这个的rather long blog post。您必须连接新添加的元素,因为它们在页面加载时不在那里。它应该能让您深入了解.live()
方法发生了什么。
https://stackoverflow.com/questions/2127719
复制