简化jQuery代码 - slide和slideToggle

时间:2017-01-19 18:20:18

标签: javascript jquery slide slidetoggle

如何简化当前的JavaScript代码?它看起来太复杂了。

errorsJSON

这里我粘贴了html和js代码http://jsfiddle.net/ecLjnnhm/ 我想指出{{1}}可以改变并取决于用户放入输入字段的内容。

1 个答案:

答案 0 :(得分:1)

可读性:每次使用变量来存储if语句的条件而不是冗长的声明。

效率:将$(this)缓存为变量,因此jQuery只需要完成一次工作。

个人偏好:我建议使用ul为任何jQuery对象变量(例如您的$)添加前缀,以表示他们是'一个jQuery对象。

// Data from AJAX response
var errorsJSON = {
    "name-pl": ["The name-pl field is required."],
    "name-en": ["The name-en field is required."]
}

var errorString = $(this).data('validate-multiple');
var errorNamesArray = errorString.split(", ");
var $ul = $('<ul class="list-unstyled">');
var $t = $(this);
var isVisible = $t.is(':visible');
var hasErrors = false;

$.each(errorNamesArray, function(key, value) {
    if (errorsJSON.hasOwnProperty(value)) {
        $ul.append(`<li><span class="help-block">${errorsJSON[value]}</span></li>`);
        hasErrors = true;
    }
});

if (!isVisible && hasErrors) {
    $t.find('div.controls').empty().append(ul);
    $t.slideDown(500);
} else if (isVisible && !hasErrors) {
    $t.slideUp(500);
} else if (isVisible && hasErrors) {
    $t.slideUp(500, function() {
        $t.find('div.controls').empty().append(ul);
        $t.slideDown(500);
    });
}