2013-03-16 114 views
5

如何處理select的摺疊事件,或者即使所選選項沒有更改,也會觸發更改事件?當選擇相同的值時,jQuery選擇更改事件

我需要有一個搜索引擎,如果選擇的選項相同,吉祥物仍然會移動。搜索引擎是在這個頁面上:http://www.marocpneus.com

例如,如果繼續並點擊第一個選擇「Type devéhicule」並選擇已被選擇的「Tourisme」,則該字符不會移動到第二選擇。但是,如果您確實將「Tourisme」更改爲其他值之一,那麼角色的確會使用傳統的jQuery更改事件進行移動。

+0

我不相信有'崩潰'(或同等)的事件。但我很想被證明是錯誤的。 – 2013-03-16 17:08:22

+1

只有在值發生變化時纔會觸發更改事件,您可能必須觸發自定義事件或在選項中使用點擊事件等。 – adeneo 2013-03-16 17:09:28

+1

@adeneo點擊選項對我來說不起作用。我使用這段代碼來測試它,但它不會觸發:$('select option')。click(function(){console.log(「CLICKED」)}); 你能舉個例子嗎? – 2013-03-16 17:25:34

回答

8

好了,經過一番研究,它看起來像選擇選項CLIK不能被解僱了,由於瀏覽器incomptability(看這太問題:Event attached to Option node not being fired

...但我們可以模擬一下,做一個變通方法, XD,你這裏有小提琴:http://jsfiddle.net/H9gg5/3

的js

$('select.click_option').click(function() { 
    if ($(this).data('clicks') == 1) { 
     // Trigger here your function:  
     console.log('Selected Option: ' + $(this).val()); 
     $(this).data('clicks', 0); 
    } else { 
     console.log('first click'); 
     $(this).data('clicks', 1); 
    } 
}); 

$('select.click_option').focusout(function() { 
    $(this).data('clicks', 0); 
}); 

的Html

<select class="click_option"> 
     <option value="1"> Selected 1 </option> 
     <option value="2"> Selected 2 </option> 
</select> 

它是做什麼的?好吧,我們知道我們已經選擇了一個選項(即使是相同的選項),因爲我們在選擇上點擊兩次,因此,只需計算點擊次數,並在之前的點擊之後觸發它,觸發XD。該代碼還處理失去焦點,因爲如果您單擊選擇,它將關閉clicks = 1,您必須重置它。

我在select中添加了一個類,用於在用戶單擊所需的選擇時觸發該功能。

希望它有幫助,問候!

+0

謝謝 - 解決這個問題的好方法。 – 2014-02-19 10:33:44