动态地将事件处理程序绑定到jQuery中已筛选元素的父级
我正在使用jQuery在Rails中开发一个web应用程序,其中许多处理都是通过表单的AJAX帖子进行的。我需要为各种“ajax:”事件(ajax:success,ajax:failure)设置处理程序,我认为这些事件会触发动态地将事件处理程序绑定到jQuery中已筛选元素的父级,jquery,ajax,Jquery,Ajax,我正在使用jQuery在Rails中开发一个web应用程序,其中许多处理都是通过表单的AJAX帖子进行的。我需要为各种“ajax:”事件(ajax:success,ajax:failure)设置处理程序,我认为这些事件会触发元素 由于有了Rails,我很容易将类添加到元素中,但将类添加到周围的表单并不总是那么容易。最后,因为我使用AJAX更新页面,我显然希望将处理程序绑定到任何需要它们的新添加表单 是否可以使用live()或类似工具,将事件动态绑定到标记,该标记是当前或将来存在的给定类的每个标记
元素
由于有了Rails,我很容易将类添加到
元素中,但将类添加到周围的表单并不总是那么容易。最后,因为我使用AJAX更新页面,我显然希望将处理程序绑定到任何需要它们的新添加表单
是否可以使用live()
或类似工具,将事件动态绑定到
标记,该标记是当前或将来存在的给定类的每个
标记的父级。使用parent()或parents()来选择它
e、 g
最好的方法是使用,
如果我理解正确,那将不起作用,因为输入:提交选择器只考虑页面加载时存在的那些输入。我有很多表格和输入。是吗?啊,也许是个好电话。对于不应该使用这些事件的调用,我可以覆盖它们吗?我有一些(非常粗略的估计,我所有的帖子都需要它们,而我所有的GET都不需要)。您可以在$.ajax
调用中设置它(如onSuccess
,onError
等)。啊,等等。我看到.ajaxSend()
等是jQuery元素上的函数,而不是绝对全局函数。如果我想让它们作用于所有表单,即使是那些后来动态添加的表单,我应该在html
或body
?@chrisyes上注册处理程序。最有效的方法是在$(document.body)
上。我刚才读到的一件事之前没有意识到,处理函数传递给AJAX设置对象,因此您可以执行$(document.body).ajaxSuccess(函数(e,xhr,settings){if(settings.type='GET'){…
来回答您的第一个问题。
$("input:submit").each(function(){
$(this).parents("form").live(...);
});