2010-03-12 75 views
8

我正在使用select。我想在用戶選擇一個值時觸發和事件。jquery select events

我正在使用事件「更改」,問題是,如果用戶打開選擇,但選擇相同的選項被選中,觸發器不會觸發。

如果選項與選擇的選項相同,用戶是否獨立選擇選項,是否有辦法捕獲事件?

謝謝。

+3

爲什麼你要重新火如果選擇不改變的事件? – 2010-03-12 15:25:43

回答

3

我不知道它是否是一個跨瀏覽器的解決方案,但這樣的:

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

作品以及在Opera/Firefox瀏覽器。

+0

我在同一頁面有很多選擇,我認爲這個選項效率不高。但是,謝謝。 – Patxi1980 2010-03-12 15:49:54

+3

你可以有許多'選擇' - 我不知道爲什麼它可能是一個問題?只使用正確的選擇器。 – Crozin 2010-03-12 15:56:11

+0

與@Crozin同時發生。上面的例子不會引起任何衝突,因爲散列標記表示一個id。只有一個元素應該擁有該個人ID。 – Tass 2011-11-14 20:58:55

0

我認爲你需要的選項是「點擊」而不是改變。

+0

這不會按預期工作,因爲只要您打開選擇選擇您的選項,就會觸發事件。因此,如果您計劃在代碼中使用用戶選擇,則可能會產生誤導。 – ryanulit 2010-03-12 15:52:59

4

您可以使用綁定方法捕獲更改和單擊事件。這應該讓你捕捉最鍵盤和鼠標交互

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

如果我把改變問題是,當我點擊選擇查看選項被解僱。 – Patxi1980 2010-03-12 15:48:12

+0

keyup和mouseout如何? 這個的最終目的是什麼?正如熊上面說的那樣,如果價值沒有改變,爲什麼你需要重新啓動一個事件? – 2010-03-12 16:35:14

+1

我不能說Patxi,但在我的應用程序中,選擇頂部選擇選項將該值傳播到頁面上的其他選擇。反之亦然(在其他地方選擇一個選項不會改變頂部選擇的選定值)。我發現,如果用戶將頂部選擇更改爲'1',然後將其他幾個選擇更改爲'2',但是然後決定他確實希望它們全部爲'1',則他可以「選擇頁面頂部的''1'(這已經是選定的選項)。 – Weezle 2012-06-05 21:30:19

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

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

我不知道這是你所需要的。 下面不是答案,而是一個竅門。

在我的情況下,我得到它的價值後,改變選擇框的值。

$("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'); 
} 

其中OTHER_VALUE可能是EXPECTED_VALUE,並且有額外的空間。示例:EXPECTED_VALUE ='foo',然後OTHER_VALUE ='foo'。所以,你得到相同的值,當你通過

var selectedValue = $(this).val().trim(); 

我要評論得到了selectedValue,但我沒有足夠的聲譽:d