2010-03-12 21 views
8

Seçimle çalışıyorum. Kullanıcı bir değer seçtiğinde tetiklemek istiyorum.Jquery select events

Olayı "değiştir" kullanıyorum, sorun, bir kullanıcı seçmeyi açar, ancak seçili aynı seçeneği belirlerse, tetikleyiciler tetiklenmez.

Bir kullanıcı, seçilen seçenekle aynıysa, bir seçeneği bağımsız olarak seçtiğinde, olayı yakalamanın bir yolu var mı?

Teşekkürler.

+3

Neden seçim değişmiyorsa bir olay-ateş yeniden istiyorsun? –

cevap

3

bunun böyle bir çapraz tarayıcı çözüm ama bir şey olsun emin değilim: Opera/Firefox kuyu

$("#mySelect option").click(function() { 
    // do sth 
}); 

eserler.

+0

Aynı sayfada çok fazla seçeneğim var ve bu seçeneğin verimli olmayacağını düşünüyorum. Ama teşekkürler. – Patxi1980

+3

Çok fazla seçeneğiniz olabilir - Neden sorun olabilir bilmiyorum? Sadece doğru seçiciyi kullanın. – Crozin

+0

@Crozin ile görüşün. Yukarıdaki örnek, karma işaretin bir kimliği gösterdiği için herhangi bir çakışma oluşturmaz. Tek bir öğe bu bireysel kimliğe sahip olmalıdır. – Tass

0

İhtiyacınız olan seçenek, değişiklik yerine "tık" olduğunu düşünüyorum.

+0

Bu, beklemediğiniz şekilde çalışmayacaktır, çünkü seçeneğinizi seçmek için seçkisini açar açmaz olayın patlamasına neden olur. Bu nedenle, kodunuzdaki bir kullanıcının seçimini kullanmayı planlıyorsanız yanıltıcı olabilir. – ryanulit

4

Değişiklik ve yakalama yöntemini kullanarak olayları tıklatabilirsiniz. Bu bu ne ihtiyaç vardır emin değilim en klavye ve fare etkileşimlerini

$('selector').bind('click change',function() {}) 
+0

Değişiklik yaparsam, seçenekleri görmek için seçime tıkladığımda sorun çıkar. – Patxi1980

+0

Anahtarlama ve mouseout nasıl? Bunun son amacı nedir, Ayılar şöyle diyor: Değer değişmemişse neden bir olayı yeniden ateşlemeniz gerekiyor? –

+1

Patxi için konuşamıyorum, ancak uygulamamda, en üstteki seçimde bir seçenek seçmek, bu değeri sayfaya seçiyor.Tersi doğru değil (başka bir seçeneğin seçilmesi, üst seçimin seçilen değerini değiştirmeyecektir). Bir kullanıcı üst seçimini '1' olarak değiştirirse ve sonra bir kaçını değiştirip '2' olarak değiştirirse, ancak hepsinin "1" olmasını istediğine karar verdiyse, " Sayfanın en üstünde "'1' (önceden seçili olan) seçeneğini seçin. – Weezle

-2
$('#selectID').change(function(){ 

    if($(this).val() == "week"){ 
    //trigger here 
    } 
}); 
<select id="selectID"> 
    <option>week</option> 
</select> 
0

yakalamak için izin vermelidir. Aşağıda cevap değil, bir hile.

Benim durumumda, get değerini aldıktan sonra select box değerini değiştiriyorum. OTHER_VALUE olabilir

$("selector").on('change', function() { 
    var selectedValue = $(this).val().trim(); 
    if (selectedValue == 'EXPECTED_VALUE') { 
    //do somethings 
    } 
    //change the value, so next time when you choose same option 
    //again the change event can be trigger 
    $(this).val('OTHER_VALUE'); 
} 

ekstra boşluk ile EXPECTED_VALUE olduğunu. Örnek: EXPECTED_VALUE = 'foo' sonra OTHER_VALUE = 'foo'. Yani

var selectedValue = $(this).val().trim(); 
Sadece yorum yapmak istiyorum

tarafından selectedValue aldığımda aynı değeri elde ama yeterli bir üne sahiptir: D