change
wywołuje się kiedy wartość się ZMIENI (zgodnie z nazwą zdarzenia).
Mógłbyś zapiąć zdarzenie click
na #countries option
, ale widzę, że to nie działa na Webkicie.
Drugie (też niedziałające) rozwiązanie to przypiąć zdarzenie click do tego selecta, wtedy click otrzymują też optiony, potem sprawdzasz czy target eventu jest option
. OCZYWIŚCIE nie na Webkicie ("kocham" ten silnik za takie jaja).
$('#s1').click(function(e){
if ($(e.target).is('option')) {
// zmiana wartości, być może na tą samą
}
});
Więc rozwiązania są dwa:
Albo przypinasz click
do selecta - ale wtedy klik rozwijający selecta też będzie łapany.
Albo używasz jakiegoś javascriptowego zamiennika <select>
, którego pewnie nie będzie się dało normalnie używać z klawiatury, ale ponieważ to tak naprawdę będą jakieś div
y czy span
y - to sobie zapniesz zdarzenie click do elementów pojawiających się po rozwinięciu.
Oba rozwiązania są nienajlepsze.
Tu masz moje testy: http://jsbin.com/IYeyEbA/1/edit