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