jslint错误..不要在循环中创建函数

时间:2014-06-26 15:20:33

标签: javascript jquery jslint

在下面的代码中我得到了JSLint错误(不要在循环中创建函数)。你能帮我修改代码以满足JSLint。

setEllipsis : function () {
    $('.co_documentReportTable > thead > tr > th').each(function() {
        $(this).find('.co_dcrTable_Header').each(function() {
            var $el = $(this);
            if($el.css("overflow") === "hidden") {
                var text = $el.html();
                while ($el.height() > 64) {
                    $el.text(function (index, text) {
                        return text.replace(/\W*\s(\S)*$/, '...');
                    });
                    //
                    var txt = 'Fair consideration/no fraudulent conveyance';
                    if(text.indexOf(txt) !== -1 ) {
                        $el.text(txt + '...');
                    }
                }
            }
        });
    });
}

我尝试创建另一个函数并在那种情况下调用它,而循环将永远执行。

1 个答案:

答案 0 :(得分:3)

一般来说,你想在这里使用text-overflow:省略CSS属性。

否则 - 拉出匿名函数并给它起一个名字,这样你最终可能会得到:

setEllipsis : function () {
    var addEllipses = function(index, text) {
        return text.replace(/\W*\s(\S)*$/, '...');
    };

    $('.co_documentReportTable > thead > tr > th').each(function() {
        $(this).find('.co_dcrTable_Header').each(function() {
            var $el = $(this);
            if($el.css("overflow") === "hidden")
            {
                var text = $el.html();
                while ($el.height() > 64) {
                    $el.text(addEllipses);
                    var txt = 'Fair consideration/no fraudulent conveyance';
                    if(text.indexOf(txt) !== -1 ){
                        $el.text(txt + '...');
                    }
                }
            }           
        });
    });
}