2010-11-20 5 views
2

Ich bin mit jQuery 1.2.7 (ich nicht aktualisieren können)jQuery: Was ist der richtige Code zum Auslösen von Ereignissen in Internet Explorer?

Um Ereignisse auslösen, wenn ein Drop-Down-Menü ausgewählt Wert ändert, habe ich den folgenden Code verwenden gesagt:

$('#dropdownWidget').bind($.browser.msie ? 'click' : 'change', function(event) { 
     //myEvent 
}); 

Dies ist ein Screenshot des Widgets:

alt text

Es funktioniert perfekt auf allen Browsern, aber in IE, wird das Ereignis ausgelöst, jedes Mal wenn der Benutzer klickt auf das Widget (noch bevor der neue Wert s gewählt).

Da ich AJAX-Anrufe auslösen, kann ich das nicht tolerieren. Danke

Antwort

1

Warum haben Sie einen Scheck für msie hinzugefügt? Folgende

versuchen einfach:

$('#dropdownWidget').bind('change', function(event) { 
     alert('test'); //myEvent 
}); 
3

Ich neige dazu, das Click-Ereignis für alle Browser zu verwenden und mit IE das Änderungsereignis erhalten das Click-Ereignis auszulösen.

$('#dropdownWidget').bind('click', function(event) { 
     //myEvent 
}).bind('change', function(event) { 
    if ($.browser.msie) { 
     $(this).click(); 
    } 
}); 

Wenn das change() Ereignis tatsächlich behoben wurde, als die andere vorschlagen, dann das ist natürlich überflüssig. Aber Sie könnten mit der Verwendung einer älteren jQuery-Codebasis feststecken.

+0

Dies sollte nicht als nicht aktuell markiert werden, da es für ältere Codebasen wie angegeben relevant ist. – Orbling

+0

Ich schätze deine Antwort ist vage, da du nicht erklärst, welche Version von jQuery du redest, wenn du "älter" sagst und als solche nicht wirklich hilft. OP – redsquare

+0

@redsquare Nun wird er wissen, ob die Verwendung von change() alleine funktioniert seine Erfahrung würde ich mir vorstellen. Aus der Spitze meines Kopfes weiß ich nicht, in welcher Version diese Funktion verbessert wurde. – Orbling

Verwandte Themen