从选择器处理多个 id 的地方获取实际 id

Getting the actual id from where slector works on multiple id

我正在与 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
}

这是一个相当大的方法,其中两种形式(form1from2)共享几乎相同的代码,因此我不想编写多个 submit() 方法分别为每个表格。那么有什么方法可以得到实际的 id 来调用 submit 方法。

$(this).attr('id')

$(this) 将指向触发 submit 事件的 form

这是所有事件处理程序中的通用语法。 this 将指向触发事件的元素,而 $(this) 将使它成为一个 JQuery 对象,以便您可以在其上使用许多内置的 JQuery 语法,就像我们使用了 .attr('id')

假设 <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