10 Stimmen

Angeklickte Option in mehreren Dropdowns erhalten

Ich habe ein Multi Select Dropdown z.B.:

<select id="myList" multiple="multiple">  
    <option value="1">Opt #1</option>
    <option value="2" selected="selected">Opt #2</option>
    <option value="3" selected="selected">Opt #3</option>
    <option value="4">Opt #4</option>
</select>

Wenn ich dann auswähle Opt #4 wie bekomme ich dann nur Opt #4 und nicht Opt #2 y Opt #3 ? Ich weiß, dass ich alle ausgewählten Optionen auf diese Weise erhalten kann:

var selectedOptions = $("#myList option:selected");

Ich will aber nur die Option, die ich angeklickt habe - Opt #4 . Ist dies möglich?

Bearbeiten: Beachten Sie, dass ich die Liste innerhalb einer change Fall kann ich es nicht in einer click Veranstaltung. Außerdem wurde das fehlende Multiple hinzugefügt.

9voto

Rory McCrossan Punkte 318758

Sie können sie im Click-Handler für jedes Optionselement abrufen:

$("#myList option").click(function() {
    var clickedOption = $(this);
});

Update

EDIT: Da ich die Liste in einem Änderungsereignis bearbeite, kann ich dies nicht in einem Klick-Ereignis tun.

In diesem Fall müssen Sie das Ereignis delegieren, indem Sie on . Versuchen Sie dies:

$("#myList").on("click", "option", function() {
    var clickedOption = $(this);
});

Es ist jedoch zu beachten, dass option Elemente werden nicht zu click Ereignisse überhaupt in IE, so dass keine der oben genannten nicht in diesem Browser funktionieren.

1voto

sv_in Punkte 13699

Wenn der Benutzer auf Option 4 geklickt hat, ohne die Strg-Taste zu drücken, wird nur Option 4 als ausgewählte Option angezeigt.

Wenn der Benutzer bei gedrückter Strg-Taste auf Option 4 geklickt hat, werden alle drei Optionen ausgewählt. Es werden also alle drei Optionen zurückgegeben. Wenn Sie nur Opt#4 wünschen, müssen Sie einen Click-Event-Handler hinzufügen.

1voto

Daniel Baulig Punkte 10294

Würde Ihnen etwas wie das Folgende helfen?

$('#myList').delegate('option', 'click', function (opt) {
  alert('Option ' + opt.value + ' was clicked');
});

0voto

Andrew Punkte 4502

Die wahre Antwort:

select.onclick = function(e) {
  console.log(e.target.value);
};

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X