在同一个函数中运行onchange和onload

时间:2014-07-09 06:23:02

标签: jquery onchange onload

我有以下脚本:

$(function user_type(){

    /* Change select box  values */
    $(document).on("change",".user_type",function(){
        var user_type = $(this).data('user_type');

        $.post(base_url+"index.php/manage/load_type",{user_type: user_type},function(data){

            var data_obj = JSON.parse(data);

 $('#yehida').empty().append('please choose');
 switch (user_type) {
    case 1:
        $.each(data_obj, function (i, item) {
            $('#yehida').append($('<option>', { 
                value: 0,
                text : 'no records'
            }));
        });
        break;
    case 2:
        $.each(data_obj, function (i, item) {
            $('#yehida').append($('<option>', { 
                value: item['id'],
                text : item['department_name']
            }));
        });
        break;

}

此脚本仅适用于onchange。我希望它在页面加载时也能运行。 我需要添加\ change?

1 个答案:

答案 0 :(得分:2)

您需要将处理程序的逻辑提取到其自己的函数中。然后,您可以在加载和选择更改时调用它。试试这个:

function foo() {
    var user_type = $(this).data('user_type');
    $.post(base_url + "index.php/manage/load_type", {
        user_type: user_type
    }, function (data) {
        var data_obj = JSON.parse(data);
        $('#yehida').empty().append('please choose');
        switch (user_type) {
            case 1:
                $.each(data_obj, function (i, item) {
                    $('#yehida').append($('<option>', {
                        value: 0,
                        text: 'no records'
                    }));
                });
                break;
            case 2:
                $.each(data_obj, function (i, item) {
                    $('#yehida').append($('<option>', {
                        value: item['id'],
                        text: item['department_name']
                    }));
                });
                break;
        }
    })
}

/* Change select box  values */
$(document).on("change", ".user_type", foo)

/* on load */
$.proxy(foo, $('.user_type'))();

请注意,加载调用需要$.proxy才能在函数中保持this的范围。