从slector处理多个id的位置获取实际id

Getting the actual id from where slector works on multiple id

本文关键字:id 位置 获取 处理 slector      更新时间:2023-09-26

我正在使用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()方法。那么,是否有任何方法可以获得调用submit方法的实际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

$(this).attr('id')

CCD_ 14将指向触发CCD_ 16事件的CCD_。

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

一样