2011-06-17 52 views
0

我有一个HTML表单动态地附加到div元素。如何将现有行为附加到新添加的元素。如何动态地将行为附加到使用jQuery的HTML动态加载元素

例如。我有像

$.fn.jqueryAjaxFormLoad - defined in jquery.ajaxload.js 
$.fn.displayMessage - defined in jquery.messagebar.js 

已经定义,这是在页面加载期间加载。现在我想追加或使这些可用于新添加的表单元素及其子元素。什么是使用jQuery实现这一点的最佳方式。

最终的期望是,我可以调用

$( 'form_element')。在表格元素之一displayMessage()。

回答

1

可以绑定处理程序使用jQuery的delegate动态地添加元素。

1

使用jQuery的.live()您可以事件处理程序绑定到对象,甚至如果通过AJAX添加新对象的事件将被触发。

http://api.jquery.com/live/

一个简单的例子是:

$('#foo').live('click', function() { 
    // this will be called even if #foo is added minutes after the initial page load! 
}); 
+0

更好的方法是使用.delegate()。 – MarrLiss 2011-06-17 07:42:28

+0

所以我读过,我会做更多的研究,谢谢 – 2011-06-17 07:46:19

+0

它是如何工作的插件。我只注意到我想调用的一些方法是插件。我如何将插件与动态加载的元素相关联。 例如:$ .fn.displayMessage – user210504 2011-06-17 07:47:35

3

您可以使用下面的代码运行在一个元素的点击事件:

$("#something").click(function(){ 
    alert("Something was clicked!"); 
}); 

简单地用替换click你想使用的事件。您可以在this page处看到活动列表。

如果事件不是在上面的链接事件的列表,只需使用此代码:

$("#something").bind("touchstart",function(){ 
    alert("You tapped something!"); 
}); 

上面的代码将使得当用户点击移动设备上的屏幕警报出现。 只需使用您需要使用的任何事件即可更改touchstart。

Ad @ m

+0

插件的行为是什么。我想让插件可用于新添加的表单元素。 。 – user210504 2011-06-17 07:50:26

+0

@ user210504一些让你使用'$( “#东西”)的bind()'和其他人使用时,它们被初始化所定义的回调函数,例如'$( “#东西”)pluginName({someCallback: function(){alert(“Callback fired”);}});'。广告@米 – kirb 2011-06-17 07:59:35