Получение дважды той же функции

Я не могу понять, что происходит здесь. Когда я выбираю опцию $('#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 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 ответа

Вы привязываете событие изменения каждый раз, когда вы изменяете раскрывающийся список semestre. Вытащите #turma событие из semestre события изменения.

Как это

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


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


Я думаю, что событие.change в теге #turma должно быть вне события.change в теге #semestre

licensed under cc by-sa 3.0 with attribution.