2013-03-03 54 views
-1

這裏jQuery的.change事件不工作是我的問題:爲什麼如我所料

我有一個選擇標記有兩個選項 - 「你好」和「世界」

HTML

<select> 
<option> Hello </option> 
<option> World </option> 
</select> 

在IE,當你選擇一個選項,併成爲所選擇的選項藍色高亮保持,直到你點擊別的地方選擇標記之外。 (在Firefox中,它不是這樣)

所以我寫了一個腳本,當選擇一個選項時,從元素中移除焦點。

腳本

$('select').change(function() { 
     $(this).blur(); 

但還是一個小問題留下: 如果我選擇你好,然後獲得您好選項 - 焦點仍將和藍色高亮顯示。但是,如果我選擇你好,然後世界選項-everything工作..
我讀到,對於選擇菜單,更改事件發生時,選擇一個選項!!!但爲什麼該選項必須不同於以前選擇觸發改變事件。我希望你明白我的英語不太好

這裏JS例子 - 請測試它在IE TEST JSFIDDLE EXAMPLE

+3

['更改事件在其值更改時發送給元素](http://api.jquery.com/change/)。在你描述的有問題的情況下,價值似乎並沒有真正改變。 – Boaz 2013-03-03 09:31:43

+0

@Boaz,「更改事件發送到一個元素,當它的值改變。」我知道這是jQuery文檔的直接引用,但它有很多問題,其中最重要的是它會讓你相信事件的目的地是一個元素。在我看來,這是無稽之談;一個事件*出現在一個元素處,並被髮送(通過底層瀏覽器代碼)到任何適當附加的事件處理程序。 – 2013-03-03 10:23:48

+0

那麼你有解決方案嗎?哪個事件我可以使用,所以無論選擇的選項是不同的還是相同的,當選擇某物我想從選擇元素中刪除焦點! – 2013-03-03 10:28:09

回答

1

如果選擇相同的值,則該選項還沒有真正改變它?

只有在選項更改時才觸發更改事件。

0

試試這個:

$(document).ready(function() { 
    $('select').mouseout(function(){$(this).blur();}) 
}); 

這是怎樣的一個黑客,將工作,但不推薦,因爲如果用戶試圖用鍵盤來填補它,那麼它可能會有點麻煩

+0

現在它不允許我選擇一個選項。它工作不正常 – 2013-03-03 09:51:10

+0

???它正在我身邊花花公子...檢查正確 – gaurav 2013-03-03 10:13:01

相關問題