Javascript 得到两次相同的函数

Javascript 得到两次相同的函数,javascript,jquery,Javascript,Jquery,我不知道这里发生了什么。当我选择$'semestre'选项时,一切都很完美。然后选择$'turma'选项并更改其值。一切正常。然后,我再次更改$'semestre'值,一切正常。但是,当我再次更改$'turma'值时,我会收到两次警报。如果我再这样做,我会得到三倍的警告,以此类推。我错过了什么 $(document).ready(function(){ $('.turma').hide(); $('#semestre').change(function(){ if

我不知道这里发生了什么。当我选择$'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();
        }
    });
});

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

每次更改semestre下拉列表时,您都会绑定更改事件。将turma事件从semestre change事件中拉出

像这样

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

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

我认为turma标记上的.change事件必须在semestre标记上的.change事件之外

您多次附加处理程序。每次semestre变更处理程序运行时,它都会将另一个变更处理程序附加到turma@MattBurland但是为什么当semestre发生变化时警报不出现;s我需要将semestre值更改为该值,然后它会发生两次:/@user3260711-因为当semestre更改时,您不会发出任何警报。@Matt Burlan Ok。。我如何解决这个问题?我试过了,但没有解决我的问题:/我应该把这个放在哪里?我刚换了这个part@user3260711-看看我的最新答案。它需要出现在第一个变更事件中,并成为一个单独的事件。@user3260711-太好了!很高兴能帮上忙。这和OP已有的有什么不同。变化只是“变化”的简写。
$('#turma').on('change', function() {
  // ....
});