如何解决将“this”添加到也接受其他参数的点击事件函数
我总是可以完成这项工作(点击对象的简单打印):
$("someobject").click(function() {console.log(this)});
而且我总是可以完成这项工作(插入一个预制函数以在点击时执行):
$("someobject").click( function() {preMadeFunction(x,y,z)});
但是如何将 this
作为附加参数传递到我要插入的预制函数中?即,我点击的对象在我插入的预制内部函数中起作用,会产生以下效果:
$("someobject").click( function() {preMadeFunction(this,x,z)});
解决方法
您可以在使用 .call()
调用函数时绑定 this
,其中第一个参数是您要为函数设置的 this
绑定,附加参数是要传递的函数参数:
function preMadeFunction(x,y,z) {
console.log(this);
console.log(x,z);
}
$(".someobject").click(function() {
preMadeFunction.call(this,1,2,3);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="someobject">A</div>
<div class="someobject">B</div>
<div class="someobject">C</div>
另一种选择可能是使 preMadeFunction
成为一个柯里化函数,该函数关闭输入参数并返回一个函数,然后该函数将其 this
限定为 jQuery:
function preMadeFunction(x,z) {
return function() {
console.log(this);
console.log(x,z);
}
}
$(".someobject").click(preMadeFunction(1,3));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="someobject">A</div>
<div class="someobject">B</div>
<div class="someobject">C</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。