我有以下问题/怀疑我希望有人可以帮助我。 假设我在加载页面时初始化了几个javascript事件。在此页面中,我允许用户单击多个操作按钮(具有这些事件)。现在,其中一个按钮在这种情况下是一个ajax调用,其中一个成功的结果将使该按钮消失并出现另一个按钮(我从ajax响应中注入此html)。在这一刻我想添加一个事件到这个新按钮,所以在我注入html之后我就这样做了。当我点击这个按钮时,我希望第一个按钮再次出现,这个按钮会消失。现在这个新按钮(在开始时那个按钮)必须再次拥有相同的事件!我是否需要再次初始化该事件?有没有办法以某种方式使自动化?我的意思是,如果我为某个div的所有人提供了几个事件,并且我在该div中加载了另一个ajax,那么它不应该立即响应同样的事件吗? 感谢
答案 0 :(得分:1)
jQuery有一个实时事件注册工具,可以保持事件对于选择器的所有当前和未来匹配都是正确的。 (jQuery.com)
对于普通的Javascript,是的,您需要再次注册该事件。
答案 1 :(得分:1)
如果您只是隐藏原始按钮(例如display:none
),那么您在开始时附加到它的所有事件仍然会在那里。
在初始页面加载后创建的新按钮(例如,通过从Ajax请求添加它们)将需要在安全地在DOM中时附加事件。
jQuery有一个自动执行此功能的功能,它称为 live 。这允许您指定选择器,并且将持续监视它。只要新对象出现在与原始选择器匹配的DOM中,事件也将附加到它。
Live的文档可以在这里看到:http://docs.jquery.com/Events/live