點擊select標簽元素的時候,會彈出下拉。然而當option中沒有元素時,就不希望彈出下拉(比如在某些浏覽器中,點擊select會默認出一個罩層效果,而此時沒有數據選擇的話,彈出比較不友好)。
首先想到是利用click事件控制,發現仍然會有下拉出現...實際這個是mousedown事件控制的。
這裡就說明下click和mousedown、mouseup。規范要求,只有在同一個元素上相繼觸發 mousedown 和 mouseup 事件,才會觸發 click 事件;如果 mousedown 或 mouseup 中的一個被取消,就不會觸發 click 事件。
這句話也很好理解,有時候我們在浏覽網頁時,鼠標在一個按鈕或者鏈接上按下了,但是突然卻又改了主意,此時我們一般會移開鼠標,在另一個空白處松開鼠標哈哈~相信這個大家經常上網都有經驗。實際這個就利用了click事件要求在同一個元素相繼觸發mousedown 和 mouseup 事件。
好了,來一段js代碼: 這裡利用了jquery
<script type="text/javascript"> var len = 0; $('#sel').mousedown(function(){ if(len == 0){// 模擬一下select標簽沒數據的標志 console.log('mousedown'); return false; } }).mouseup(function(){ console.log('mouseup'); }).click(function(){ console.log('click'); }); </script>
點擊後發現,log的順序是:mousedown-->mouseup-->click
當在mousedown中return false後,就不會彈出下拉或者罩層了...
-