lint严格违反使用(this)

时间:2014-04-04 21:26:47

标签: javascript jquery jslint

我似乎无法弄清楚如何通过这个'要压制jslint错误的元素。这是我的代码:

function incrementFilter(event, selectedValue) {

"use strict";

$(this).html(selectedValue);

//set the next button to a var
var current = $(event.currentTarget);
var parent = $(current).parents().eq(1); // grandfather //div
var nextParent = $(parent).next().first(); // next div
var enableElem = $(nextParent).find('button');

//remove disable attr
enableElem.removeAttr("disabled");
}

//enable successive button, on each former button click
$(".irFilter .filterChosen").on("customEvent", incrementFilter);

//  apply text to dropdown after selected
$(".irFilter").on("click", "ul li", function () {

    //grab link text
    selectedValue = $(this).text();
    var thisIrFilterDiv = $(this).parents('.irFilter');
    thisFilterChosenSpan = $(thisIrFilterDiv).find('.filterChosen');

    //apply text
    thisFilterChosenSpan.trigger("customEvent", [selectedValue]);
});

我想将span标记作为参数传递给你看到被触发的customEvent的旁边,但我似乎无法弄清楚如何传递它以便我不必使用'这个'在功能中。我试图将它传递到一个JSON对象中,然后通过重命名参数并将其像这样循环来将其解压缩到其他对象上

function incrementFilter(event, params) {

"use strict";

var span, selectedValue;

$.each(params, function (i, item) {

    if (i === '1') {

        selectedValue = item;

    } else if (i === '2') {

        span = item;

    }
})

$(span).html(selectedValue);

//set the next button to a var
var current = $(event.currentTarget);
var parent = $(current).parents().eq(1); // grandfather //div
var nextParent = $(parent).next().first(); // next div
var enableElem = $(nextParent).find('button');

//remove disable attr
enableElem.removeAttr("disabled");
}
由于我当时无法弄清楚如何使用跨度,所以

无法正常工作。

是什么方法可以消除"这个"所以我可以通过lint?

1 个答案:

答案 0 :(得分:1)

最简单的方法是通过添加绕过JSLint的注释:

function incrementFilter(event, selectedValue) {

  "use strict";
  /* jshint validthis:true */
  $(this).html(selectedValue);

JSLint正试图警告您this此时可能是undefinedThere's some discussion on a related project关于完全删除它,所以你应该安全地忽略这个错误。

(如果您不想在代码中分散这些评论,可以将"validthis": true添加到.jshintrc文件中。http://www.jshint.com/docs/options/#validthis

作为旁注,我建议使用JSHint而不是JSLint(特别是如果你是初学者),因为Hint试图捕获错误,而Lint也发现你的编码风格有问题。