如何迭代相同 class 的每种形式并使用 jQuery 唯一地处理提交?
How to iterate each form of same class and handle submits uniquely with jQuery?
我在同一页面上有多个表单 class form_delete
。
如何遍历 jQuery 中的这些表单,添加将唯一应用于每个表单的 submit
事件?
我已经使用 $('.form_delete').each(...);
尝试过此操作,但是当我添加 $(this).submit(...)
事件时它不起作用(事件未注册)。
表格:
<form class="form_delete">
</form>
<form class="form_delete">
</form>
<form class="form_delete">keep adding n forms to infinity ;)
jQuery:
$('.form_delete').each(function() {
$(this).submit( function(event) {
// Nothing gets registered here
});
}
$('.form_delete').each(function() {
$(this).on("submit", function(e) { // submit button pressed
// prevent form from doing what it normally does when submit button is pressed
e.preventDefault();
// do anything else that you want to do when the submit button is pressed
alert( "Hi");
});
});
我不知道你为什么要用.each();无论如何,如果所有具有相同 class 的表格只使用
$('.form_delete').on('submit',function(e){
e.preventDefault();
alert($(this).index());
return false;
});
在这种情况下,您将需要像 data-selectForm 这样的东西来定义您提交的表单
<form class="form_delete" data-selectForm="firstform">
</form>
<form class="form_delete" data-selectForm="secondform">
</form>
然后使用
$('.form_delete').on('submit',function(e){
e.preventDefault();
alert($(this).data('selectForm'));
return false;
});
jQuery的event delegation也是一个选项。
$('body').on('submit', '.form_delete', function submitCB(e) {
e.preventDefault();
});
当事件冒泡到 body
时,jQuery 将根据字符串选择器(parm 2)检查 target
元素,并且仅在以下情况下调用回调(parm3)它匹配。
这样你在页面上只有一个事件侦听器,而不是很多。
我在同一页面上有多个表单 class form_delete
。
如何遍历 jQuery 中的这些表单,添加将唯一应用于每个表单的 submit
事件?
我已经使用 $('.form_delete').each(...);
尝试过此操作,但是当我添加 $(this).submit(...)
事件时它不起作用(事件未注册)。
表格:
<form class="form_delete">
</form>
<form class="form_delete">
</form>
<form class="form_delete">keep adding n forms to infinity ;)
jQuery:
$('.form_delete').each(function() {
$(this).submit( function(event) {
// Nothing gets registered here
});
}
$('.form_delete').each(function() {
$(this).on("submit", function(e) { // submit button pressed
// prevent form from doing what it normally does when submit button is pressed
e.preventDefault();
// do anything else that you want to do when the submit button is pressed
alert( "Hi");
});
});
我不知道你为什么要用.each();无论如何,如果所有具有相同 class 的表格只使用
$('.form_delete').on('submit',function(e){
e.preventDefault();
alert($(this).index());
return false;
});
在这种情况下,您将需要像 data-selectForm 这样的东西来定义您提交的表单
<form class="form_delete" data-selectForm="firstform">
</form>
<form class="form_delete" data-selectForm="secondform">
</form>
然后使用
$('.form_delete').on('submit',function(e){
e.preventDefault();
alert($(this).data('selectForm'));
return false;
});
jQuery的event delegation也是一个选项。
$('body').on('submit', '.form_delete', function submitCB(e) {
e.preventDefault();
});
当事件冒泡到 body
时,jQuery 将根据字符串选择器(parm 2)检查 target
元素,并且仅在以下情况下调用回调(parm3)它匹配。
这样你在页面上只有一个事件侦听器,而不是很多。