2009-11-17 63 views
1

我有以下问题/疑问,希望有人能帮助我。 假设我在加载页面时有几个JavaScript事件正在初始化。在这个页面中,我允许用户点击几个动作按钮(有这些事件)。现在,在这种情况下,其中一个按钮使ajax调用,其中一个成功的结果将使该按钮消失,并使另一个按钮出现(我从ajax响应注入此html)。在这一刻我想添加一个事件到这个新的按钮,所以在我注入html后,我这样做了。当我点击这个按钮时,我希望第一个按钮再次出现,而这个按钮会消失。现在这个新按钮(在开始的那个按钮)必须再次有同样的事件!我是否需要再次初始化该事件?是不是有办法让这种自动化方式成为可能?我的意思是,如果我为某个div的所有人开了几个事件,并且在该div中加载了另一个Ajax,那么不应该对同一事件立即做出回应吗? 谢谢ajax调用后重新初始化dom事件

回答

1

jQuery有一个实时事件注册功能,它可以保持事件对所有当前和未来匹配的选择器都是正确的。 (jQuery.com

至于简单的Javascript,是的,您需要重新注册该事件。

+1

修改为jQuery的1.7,它取代.live()用。对() – Kzqai 2012-07-27 22:34:25

1

如果您只是隐藏原始按钮(例如display:none),那么您在开始时附加到它的所有事件仍然会在那里。

在初始页面加载后创建的新按钮(例如,通过从Ajax请求中添加它们)将需要在DOM中安全地附加事件。

jQuery有一个自动执行此功能的功能,它称为live。这可以让你指定一个选择器,并且会不断监视它。一旦新对象出现在与原始选择器匹配的DOM中,事件也将附加到它。

进行实时文档可以在这里看到:http://docs.jquery.com/Events/live

+0

改性为jQuery的1.7,它取代.live()用。对(中) – Kzqai 2012-07-27 22:34:35