2012-05-03 3 views
5

mam multi wybrać rozwijana npGet kliknięciu w opcję wielokrotnego rozwijanej

<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> 

Gdybym wtedy wybiera Opt #4, jak mogę dostać tylko wtedy Opt #4 a nie Opt #2 i Opt #3? Wiem, że mogę dostać wszystkie wybrane opcje, to:

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

Jednakże chcę tylko opcję kliknąłem - Opt #4. czy to możliwe?

Edycja: zauważ, że podczas manipulowania listą wewnątrz wydarzenia change nie mogę tego zrobić w zdarzeniu click. Dodano także brakującą wielokrotność.

+0

Co chcesz osiągnąć? Jeśli chcesz uzyskać "klikniętą opcję", dlaczego wybierasz wiele opcji? – MatuDuke

+2

Czy chcesz pominąć dodanie atrybutu "multiple", aby wybrać tag? –

+0

Tęskniłeś za atrybut 'mulitple =" multiple "' z twojego 'select'. Poza tym powinien działać. – phuzi

Odpowiedz

7

Można go pobrać w obsługi kliknij po każdym elemencie opcję:

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

Aktualizacji

EDIT: Jak manipulować listę wewnątrz przypadku zmian, mogę nie zrobisz tego w przypadku kliknięcia.

W takim przypadku należy przekazać wydarzenie, używając numeru on. Wypróbuj to:

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

Spowoduje to dodanie jednej procedury obsługi zdarzeń do każdej opcji. Jeśli kiedykolwiek dodałeś opcje po wywołaniu tego, nowe opcje nie będą działać zgodnie z oczekiwaniami. Proszę spojrzeć na moje rozwiązanie, jak uniknąć tego problemu. –

+0

Zapomniałem wspomnieć, że manipuluję listą w wydarzeniu zmiany, więc nie mogę tego zrobić w przypadku kliknięcia. – Frets

+0

@Przypomina bez problemu, sprawdź moją aktualizację. –

1

Jak wiadomo, jeśli użytkownik kliknął przycisk wyboru nr 4 bez naciśniętego klawisza Cntrl, to otrzymasz tylko Opt # 4 jako wybraną opcję.

Jeśli użytkownik kliknął przycisk wyboru # 4 przy naciśniętym klawiszu Cntrl, wszystkie trzy opcje zostaną wybrane. Wszystkie trzy opcje zostaną zwrócone. Jeśli chcesz używać tylko opcji Opt # 4, musisz dodać procedurę obsługi zdarzeń kliknięcia.

1

Czy pomoga Ci coś podobnego?

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