看板 Web_Design 關於我們 聯絡資訊
怎麼會沒效呢 ~"~? 可能是說得不夠清楚, 附個範例: <title>select test</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script> <select multiple="multiple"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> <script type="text/javascript"> // 選擇所有 multiple select // 綁定 mousedown 事件的 listener // 針對的對項是 select 其下的 option $('select[multiple="multiple"]').on('mousedown', 'option', function(event) { // 阻止 mousedown 預設的後續行為 // ( 其中最少應該包括了: // -> 判斷有沒有 ctrl key, 決定是否要取消其他選擇 // -> 選擇當下按到的 // -> 對 <select> 設定 focus ) // 但不阻止 event bubbling event.preventDefault(); // 設定當下點到的目標 // 沒選的變成有選的, 有選到的變成沒選的 event.currentTarget.selected = !event.currentTarget.selected; // 重新對 select 物件設定 focus, 註解這行就知道差別了 ~"~ $(event.delegateTarget).focus(); }); </script> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.190.210
Crow22312:pc 上貼出去就斷線連不上, 怪的是手機可以… 匆忙間的 04/10 23:44
Crow22312:例子, 有問題就別客氣 /o.o\ 04/10 23:45
tomin:我用pc在jsfiddle上跑沒反應(點了都沒選取) 請再check一下 04/11 02:04
嗯, 看來您用的是 IE, 這是瀏覽器問題, 先天限制: http://www.highdots.com/forums/jquery/ select-option-not-catching-mousedown-281439.html ( 縮了以後是: http://ppt.cc/83E6 ) 簡單說就是 IE 的 option 上面收不到 mousedown 的 event, 所以要能在 IE 上跑的話可能就沒辦法這樣子偷懶去攔截 event, 真的就是需要去紀錄那些是已經選擇的, 然後自動重新選擇.. 但那樣子應該就無法避免可能的閃爍了 :( ( Chrome 18.0.1025.152 m 是可以正確運作的 )
kerash:應該是我針對的東西錯了..! 我是針對 select 做處理! 04/11 09:00
※ 編輯: Crow22312 來自: 114.45.189.47 (04/11 21:53) 想一想還有一種可能, select 收到 mousedown 之後用 X, Y 座標 很搞剛的去判斷按在哪個 option 上面, 然後修改, preventDefault().. ※ 編輯: Crow22312 來自: 114.45.189.47 (04/11 21:57)