我在某些javascript中有一个switch case语句,然后需要运行相同的.each函数,只需更改参数即可。

$('#item_type').change(function() {
        switch(this.value) {
            case 'CH':
                $('#item_code').empty();
                $.each(cheeses, function(key, value) {
                     $('#item_code')
                    .append($("<option></option>")
                    .attr("value",key)
                    .text(value));
                });
                break;

            case 'Z':
                $('#item_code').empty();
                $.each(sizes, function(key, value) {
                     $('#item_code')
                    .append($("<option></option>")
                    .attr("value",key)
                    .text(value));
                });
                break;
        }

    });


如何更改内容,使.each函数仅定义一次,并且只能在各种情况下调用,如下所示:

case 'CH':
    $('#item_code').empty();
    doEach(cheeses);
    break;
case 'Z':
    $('#item_code').empty();
    doEach(sizes);
    break;

最佳答案

非常简单的方法是:

function doEach(collection) {
    $.each(collection, function(key, value) {
        $('#item_code')
            .append($("<option></option>")
            .attr("value",key)
            .text(value));
    });
}


或者您可以使用非常简单的插件:

$.fn.populate = function (collection) {
    return this.each(function () {
        var $self = $(this).empty();
        $.each(collection, function (key, value) {
            $('<option>').attr('value', key).text(value).appendTo($self);
        });
    });
};

$('#item_type').change(function () {
    switch (this.value) {
        case 'CH':
            $('#item_code').populate(cheeses);
            break;

        case 'Z':
            $('#item_code').populate(sizes);
            break;
    }
});

关于javascript - 如何提取此.each函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26169869/

10-09 23:16