在jQuery中重写if-else块

时间:2014-04-01 11:28:44

标签: jquery

我的同事给了我一段代码,阻止用户在textarea中输入有限的输入。代码完美无缺

var words = this.value.match(/\S+/g).length;
if (words > 10) {
    var trimmed = $(this).val().split(/\s+/, 10).join(" ");
    $(this).val(trimmed + " ");
}
else {
    $('#word_left').text(10-words);
}

工作演示:http://jsfiddle.net/3qHwG/

我已经读过jQuery可以通过多种方式高效编写,我想知道如果没有if-else或使用不同的方法可以重写这段代码吗?

感谢您提供的任何帮助,最终会增加我的知识。

1 个答案:

答案 0 :(得分:1)

这扩展了可读性:

$("#cnt").on('keyup', function (e) {
    var val = $(this).val(),
        // if val is empty, set trimmed to empty array, which translates to 'zero' length
        trimmed = val ? val.split(/\s+/, 10) : [];

    if (!((e.keyCode || window.event.keyCode) === 8)) // if not a backspace
        $(this).val(trimmed.join(" "));

    $("#word_left").text(10 - trimmed.length);
});

<强> DEMO

每次只执行一次.split的操作,这比你的更好,因为你的操作不仅会执行一次操作,而且如果单词的限制超出,也会执行另一次操作。

希望它有所帮助!