获得两倍相同的功能

时间:2014-02-04 16:47:19

标签: javascript jquery

我无法弄清楚这里发生了什么。当我选择$('#semestre')选项时,一切都很完美。然后我选择$('#turma')选项并更改其值。一切正常。然后,我再次更改$('#semestre')值,一切正常。但是,当我再次更改$('#turma')值时,我会收到两次警报。如果我再次这样做,我得到警报的三倍,依此类推。我在这里缺少什么?

$(document).ready(function(){
    $('.turma').hide();
    $('#semestre').change(function(){
        if($(this).val() != ''){
            $('.options_turma').remove();
            $('.turma').show();
            $.post('seleciona_turmas.php', {cd_turma: $(this).val()}, function(data){
                var item;
                data = jQuery.parseJSON(data);

                $.each(data.json, function(){
                    item = "<option class='options_turma' value='" + this['codigo'] + "'>" + this['descricao'] + "</option>";
                    $('#turma').append(item);
                });

                $('#turma').change(function(){
                    if($(this).val() != ''){
                        alert("OK");
                    }else{
                        alert('NULL');
                    }
                });
            });
        }else{
            $('#turma').val('');
            $('.turma').hide();
        }
    });
});

我试图说清楚,但这是一个令人困惑的问题。

3 个答案:

答案 0 :(得分:0)

您每次 更改semestre下拉列表时,您正在绑定更改事件 。将#turma事件从semestre更改事件中拉出来。

喜欢这个

$('#semestre').change(function() {
    //Semestre code
});

$('#turma').change(function(){
    //Turma code
});

答案 1 :(得分:0)

我认为#turma标记上的.change事件必须超出#semestre标记上的.change事件

答案 2 :(得分:0)

$('#turma').on('change', function() {
  // ....
});