2012-09-05 15 views
7

Mam problem z wykonaniem zdarzenia click na elemencie HTML option.Zdarzenie związane z kliknięciem w opcji wyboru

Nawet prosty console.log('hello!'); nie będzie działał.

próbuję z tym:

$('#mySelect option').bind('click', function(){ 
    console.log('hi!'); 
}); 

To działało przez jakiś czas, ale potem przestał.

+0

Co ostatnio zmieniłeś? jakiej wersji jQuery używasz? jak jest ładowany? Gdzie na tej stronie (lub w skryptach) wywołujesz tę funkcję w związku z ładowaniem elementu? Czy element jest generowany dynamicznie lub statycznie? – jcolebrand

+0

ostatnie zmiany myślę, że nie ma znaczenia, ponieważ nie zadziała, nawet jeśli sprawdzę ostatnią działającą wersję ... Wersja jQuery jest najnowsza i jest ładowana dinamicznie w stopce ... element opcji jest generowany ze skryptu php przy ładowaniu –

+0

dobrze na początek, jeśli jQuery jest ładowany w stopce, gdzie jest to ładowane? – jcolebrand

Odpowiedz

13

W moim przypadku poniższego kodu działa

$('#myItem').change(function(){ 
      //do somthing 
}) 
+0

To jest dokładnie to, co chciałem, dziękuję. – Zy0n

2

Sprawdź to js skrzypce -

http://jsfiddle.net/4W826/

HTML

<select id="mySelect"> 
       <option value="volvo">Volvo</option> 
       <option value="saab">Saab</option> 
       <option value="mercedes">Mercedes</option> 
       <option value="audi">Audi</option> 
     </select> 

jQuery

$('#mySelect').bind('click', function(){ 
alert('hi!'); 
}); 

Zmiana z Click do Change

+1

dzięki za pomoc! –

3

Możesz powiązać za pomocą .on(), podając identyfikator <select>. Ogólnie rzecz biorąc, change jest zdarzeniem wywoływanym pod numerem <select>.

Nie trzeba więc wspominać o option podczas imprezy wiążącej.

$(document).on('change','#mySelect', function(){<br> 
    console.log('hi!'); 
}); 

LUB

$('#mySelect').bind('change',function(){<br> 
    console.log('hi!'); 
}); 
0

Proponuję do korzystania .on() zamiast .bind().

$('#mySelect').on('change', function(){ 
    var $this = $(this), 
     $value = $this.val(); 

    alert($value); 

}); 

jsFiddle

0

ponieważ zmiana nie jest wystarczająco dobre dla mnie, a ja nie znaleźć sposób, aby wywołać opcję kliknij co zrobiłem jest

$('#mySelect').click(function() { 
     if ($(this).attr('optionclick') == '1') { 
      $(this).attr('optionclick', '0'); 
     } 
     else { 
      $(this).attr('optionclick', '1'); 
     } 
    }); 
1

To rozwiązuje sprawę - dla moich potrzeb (aby złapać zdarzenie, gdy niektóre z wybranych elementów o n kliknięto moją stronę).Nie zatwierdzone zachowanie dotykowego, ale jednak Firefox, Chrome wydaje się być OK w/tym

$('.class_for_select').focus(function() { 
    // do something here 
}); 
1

Sample przykład pokaże, jak zmienić wartości rozwijanych i kolor dla opcji na kliknięcie lub zmianę select

HTML:

<select name="options"> 
     <option value="1">Red</option> 
     <option value="2" selected="1">Green</option> 
     <option value="3">Blue</option> 
</select> 

jQuery:

$("select").on("click", function() { 
    debugger; 
    var sVal = $(this).val(); 
    $(this).css("background-color", "red"); 
    $(this).find("option").css("background", "white"); 
    $(this).find('option:selected').css("background-color", "red"); 
    $("input").val($(this).val()); 
}); 

Demo

Powiązane problemy