Hier ist eine vereinfachte Version von meinem Problem:Ereignis ändern Auslösen zu früh auf Auswahlbox
Die HTML:
<select id="mySelect">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Die jQuery:
$('#mySelect').change(function() {
// do stuff
});
Das Problem ist, dass, wenn ich meinen Mauszeiger über die Optionen bewege, do stuff
passiert, während ich über eine der Optionen schweben, bevor ich tatsächlich die neue Option auswähle. Wie vermeide ich dieses Verhalten, sodass .change()
nur ausgelöst wird, wenn ich eine neue Option in der Auswahl ausgewählt habe?
Edit 1: Weitere Informationen
Anscheinend dieser Code würde nicht dazu führen, Verhalten beschrieben. Im aktuellen Code werden die Auswahlfelder aktualisiert, während weitere Daten über .get()
geladen und verarbeitet werden.
Edit 2: Tatsächliche Funktion, aktualisiert eine Auswahlbox
Diese Funktion ist der in meinem Code, der eine der Auswahlboxen aktualisiert nach mehr Daten geladen hat. Die globale Variable padm_courses
ist ein Array von Kursobjekten, die über eine code
und name
Eigenschaft verfügen, die zum Füllen des Kursfilter-Auswahlfelds verwendet wird.
function loadCourseFilter() {
var selected = '';
var sel = $('<select>').attr('id','padmCourseFilter');
$(padm_courses).each(function() {
sel.append($("<option>").attr('value',this.code).text(this.name));
});
if($('#padmCourseFilter').length) {
selected = $('#padmCourseFilter').val();
$('#padmCourseFilter').replaceWith(sel);
if(selected != '') $('#padmCourseFilter option[value="'+escape(selected)+'"]').prop('selected', true);
} else {
sel.appendTo('#padm_hub_filters');
}
$('#padmCourseFilter').change(function() {
processMCRsByCourse($('#padmCourseFilter').val());
var tables = $('.sv-datatable').DataTable();
tables.rows('.duplicate').remove().draw();
filterTheBlockFilter();
});
}
Entweder '$ verwenden ("# \\ # MYSELECT")' oder 'id =" mySelect "' – Satpal
Ja, das war ein Tippfehler in meinem Fragecode, nicht in meinem eigentlichen Code. Ich habe es editiert und repariert. – AntonChanning
'tun Sachen passiert, wie ich über eine der Optionen schweben 'Nichts im Code, den Sie gezeigt haben, würde dieses Verhalten verursachen. Können Sie ein vollständigeres Beispiel des Problems zeigen –