我正在使用jQuery。我有一个Javascript方法,可以在这两个选择器上工作 -
$('#from1, #form2').submit(function() {
....
....
//is there any way to know the actual id (that is - form1 or form2)
//for which the submit() method is called
}
这是一个非常大的方法,其中两个表单(form1
和from2
)共享几乎相同的代码,因此我不想为每个表单编写多个submit()
方法单独形成。那么有没有办法获得调用id
方法的实际submit
。
答案 0 :(得分:3)
假设<form>
元素是匿名方法中的this
,因为它们看起来来自您(非常删节)的已发布代码,那么您只需使用:
$('#form1, #form2').submit(function(){
let formID = this.id;
// or (expensively, redundantly):
// formID = $(this).prop('id');
// or:
// formID = $(this).attr('id');
});
但是,如果<form>
的子元素是this
,那么您可以使用:
$('#form1, #form2').submit(function(){
let formID = this.form.id;
});
请注意,在上面我已经更正了我认为选择器中的拼写错误,#from1
已更改为#form1
。
此外,正如评论中正确指出的那样,let
是用于声明变量的相对较新的ES6替代方案;如果您需要支持旧浏览器,则可能需要坚持使用var
。
答案 1 :(得分:1)
$(this).attr('id')
$(this)
会指向触发form
事件的submit
。
这是所有事件处理程序中的通用语法。 this
将指向触发事件的元素,$(this)
将使其成为JQuery对象,以便您可以在其上使用许多内置的JQuery语法,就像我们使用.attr('id')
的方式一样