如何将元素传递给函数

how to pass an element to a function

我想将 form.find 元素传递给我的函数可用性检查器。我试图获取元素属性但没有成功。怎么了?

var AvailabilityChecker = function (ev, el) {   
       console.log("arguments: ",Array.prototype.slice.call(arguments)); //gives: arguments:  Array [ Object ]
       console.log(ev);
       console.log("AvailabilityChecker: ",el.attr('AvailabilityChecker') //gives Typeerror
}


form.find("input[AvailabilityChecker]").keyup(AvailabilityChecker.bind(this));

el 不会神奇地附加为参数的属性。所以你需要用另一种方式来做。使用 .bind() 也改变了获取元素引用的方式

var AvailabilityChecker = function (ev) {  
  console.log("1-DOM", ev.target.getAttribute("AvailabilityChecker"))
  console.log("1-JQ",$(ev.target).attr("AvailabilityChecker"))
}

$("input[AvailabilityChecker]").keyup(AvailabilityChecker.bind(this));

var AvailabilityChecker2 = function (ev) {  
  console.log("2-DOM", this.getAttribute("AvailabilityChecker"))
  console.log("2-JQ",$(this).attr("AvailabilityChecker"))
}

$("input[AvailabilityChecker]").keyup(AvailabilityChecker2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input AvailabilityChecker="aaaa">