我无法弄清楚这里发生了什么。当我选择$('#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();
}
});
});
我试图说清楚,但这是一个令人困惑的问题。
答案 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() {
// ....
});