我无法在通过
加载的按钮上使用click()事件html().
$.post('includes/addconnectordetails.php',{connnumb: connno},function(data){
$('#divgeneratecheck').html(data);
});
我从div#divgeneratecheck上的addconnectordetails.php页面加载一个表单,表单正在加载,但我无法在表单中显示的按钮上使用.click()事件。我怎么能这样做?
答案 0 :(得分:4)
答案 1 :(得分:4)
您需要使用.on
,您必须将其附加到您想要举办活动的项目的父级。我使用body,但在你的情况下可能是 #divgeneratecheck
$('body').on('click','SELECTOR',function() {
/* Code here */
});
只需将选择器替换为要将事件附加到的dom部分。 (比如#btn1或.button)
答案 2 :(得分:3)
您遇到的问题是由于事件委派。当您尝试通过click()事件处理程序附加事件侦听器时,它将仅引用最初创建的元素,而不是动态加载的元素。
考虑创建一个地图,然后尝试将该地图用于之前未在其上的位置。由于它最初缺席,你不会知道它存在,因此无法正常引用它。但是,委托事件基本上允许在创建映射后将该位置添加到映射中,然后即使它最初不在那里也会被引用。
.on()方法将事件处理程序附加到当前选定的集合 jQuery对象中的元素。从jQuery 1.7开始,使用.on()方法 提供附加事件处理程序所需的所有功能。对于 帮助转换旧的jQuery事件方法,请参阅.bind(), .delegate()和.live()。要删除与.on()绑定的事件,请参阅 .off()。附加仅运行一次然后删除的事件 本身,见.one()
另外:
事件处理程序仅绑定到当前选定的元素;他们 在您的代码调用.on()时页面上必须存在。 要确保元素存在且可以选择,请执行事件 绑定在文档就绪处理程序中的元素 页面上的HTML标记。如果将新HTML注入页面, 选择元素并在新HTML之后附加事件处理程序 放入页面。或者,使用委派事件来附加事件 处理程序,如下所述。
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序的需要。这个 element可以是a中视图的容器元素 例如,模型 - 视图 - 控制器设计,或者如果事件是文档 handler希望监视文档中的所有冒泡事件。该 文档元素在之前的文档头部中可用 加载任何其他HTML,因此可以安全地在那里附加事件 等待文件准备好。
除了能够处理后代元素的事件外 尚未创建,委托事件的另一个优势是他们的 当许多元素必须存在时,开销要低得多 监测。
答案 3 :(得分:1)
如果没有一些帮助,jquery无法挂钩动态加载的html,请查看jquery网站中的live(),on()或delegate()。