获取slector在多个id上工作的实际id

时间:2016-10-26 12:15:21

标签: javascript jquery forms form-submit

我正在使用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

2 个答案:

答案 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')的方式一样