我想离开这个:
$("#btnminus").mousedown(function () {
$(this).animate({width: "95%", height: "95%"}, 50);
}
到此:
function btnPressed() {
$(this).animate({width: "95%", height: "95%"}, 50);
}
$("#btnminus").mousedown(function () {
btnPressed();
}
显然,这并不容易。 JSLint给了我一个“严格违规”的问题,我不知道这意味着什么。
答案 0 :(得分:4)
它更容易,只需引用该函数,this-value
将是元素
$("#btnminus").mousedown(btnPressed);
当你在没有上下文的另一个匿名函数中调用该函数时,this-value
将是window
(在草率模式下,严格来说是undefined
)< / em>,而不是元素,因为当没有指定其他内容时,它是默认的执行上下文。
此处了解some examples如何在事件句柄中调用函数时设置this-value
。
由于JSLint内置了大量的愚蠢内容,并且发现了各种不成功的问题,你可以
this
导致错误
this: true
指令添加到您的文件中,以使JSLint忽略此类错误-
/*jslint this: true*/
"use strict"
function btnPressed() {
$(this).animate({width: "95%", height: "95%"}, 50);
}
$("#btnminus").mousedown(btnPressed);
将验证
答案 1 :(得分:1)
JSLint给了我一个严格的违规行为&#39;问题,我不知道是什么意思。
这意味着您正在使用strict
模式,该错误会告诉您
function btnPressed() {
$(this).animate({width: "95%", height: "95%"}, 50);
}
您在独立函数的上下文中使用this
,该函数不是#btnminus
元素。
在此代码中
$("#btnminus").mousedown(function () {
btnPressed();
}
匿名函数中的 this
是正确的,因为jQuery会为您管理,但是当您调用btnPressed()
时this
它不是正确的。
你可以简单地做$("#btnminus").mousedown(btnPressed);
,一切都会好的。
答案 2 :(得分:0)
使用event.currentTarget而不是:
function btnPressed(event) {
var $el = $(event.target);
$(this).animate({width: "95%", height: "95%"}, 50);
}
$("#btnminus").mousedown(btnPressed);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnminus">Minus</button>
&#13;