这一切都在标题中。
它也发生在 jQuery(document)上。
我不明白代码中的错误。
这里是摘录:
var checkboxes = jQuery('.js-selected-items', self.$el);
checkboxes.each(
function (i) {
if (!jQuery(this).is(':disabled')) {
jQuery(this).prop('checked', true);
}
}
);
...
显示所有 jQuery(this)的警告。
代码当然有效,但我想摆脱所有JSHint警告。
答案 0 :(得分:1)
$.each()
的功能参数是:
Type: Function( Integer index, Element element )
因此,在我的情况下,使用element
代替this
将满足JSHint或PHPStorm检查。
checkboxes.each(function (i, elm) {
if (!$(elm).is(':disabled')) {
$(elm).prop('checked', true);
}
});
答案 1 :(得分:1)
您只需要为JSHint设置一个标志,以允许在构造函数之外使用this
:
checkboxes.each(function() {
/* jshint validthis: true */
jQuery(this)...
});
来自JSHint docs for the validthis
configuration option:
当代码以严格模式运行并且您在非构造函数中使用此选项时,此选项(
validthis
)会抑制有关可能严格违规的警告。您应该仅在函数范围内使用此选项 - 当您肯定在严格模式下使用此选项时(例如,如果使用Function.call调用函数)。注意:此选项只能在函数范围内使用。如果您尝试全局设置此选项,JSHint将失败并显示错误。
在幕后,jQuery#each
使用Function#call
调用您的回调,将循环中的当前元素作为该函数的第一个参数传递,使JSHint的validthis
标志可用于这种情况。