2009-04-05 3 views
10

Ich habe eine Dropdown-Liste und ich habe einen Change-Event-Handler daran gebunden. Wann immer der Benutzer eine neue Option auswählt, möchte ich wissen, ob es die letzte Option der Liste ist.Was ist der beste Weg zu überprüfen, ob die aktuell ausgewählte Option in einer Dropdown-Liste die letzte ist?

ärgerlicher, die entsprechende Bedingung im Snippet unten immer true zurückgibt, ist unabhängig davon, welche Option ausgewählt worden:

 sel.change(function() { 
      //this always returns true! 
      if(jQuery('#' + this.id + ' option').is(':last')) { 
       alert('hello I am the last option'); 
       inputDiv.show(); 
       inputDiv.find("input").attr('disabled',false); 
      } else { 
       inputDiv.hide(); 
       inputDiv.find("input").attr('disabled',true); 
      } 
     }); 

Auch wenn ich dies tun, das Ergebnis ist das gleiche:

if(jQuery('#' + this.id + ' option:selected').is(':last')) { 
... 

Was mache ich falsch? Und wenn Sie wissen, warum bewerten diese Tests beide als wahr?

EDIT: Fand die Lösung:

if(jQuery('#' + this.id + ' option:last').is(':selected')) { 
... 
} 

Hat jemand weiß, einen besseren Weg, dies zu tun?

+1

Wenn Sie eine Lösung für Ihre eigene Frage haben Sie es als Antwort nicht bearbeiten auf die Frage hinzufügen. Außerdem kann die Nicht-JQuery-Option von porneL etwas schneller sein. – bendewey

+0

+1 für beschreibende Frage Titel – Tjorriemorrie

Antwort

18

Schau, kein Aufblasen!

sel.selectedIndex == sel.length-1 

Das ist W3C standard solution.

+0

Ich gebe zu, das ist besser. Vielen Dank. – karim79

+0

Ich hätte gehofft, dass jQuery das etwas eleganter machen könnte. –

+0

Stimmt, das sieht nicht "jQuerish" aus, aber diese Methode ist so einfach, dass sie keinen Convenience Wrapper benötigt. – Kornel

10

Hey, hier ist eine andere ... und es ist „jQuerish“ :)

$("select option:last").is(":selected") 
Verwandte Themen