JSHint说"参数类型与参数不匹配"对于jQuery(这个)

时间:2014-07-30 08:42:03

标签: javascript jquery jshint

这一切都在标题中。

它也发生在 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警告。

2 个答案:

答案 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标志可用于这种情况。