圖片來源
問題解決
我寫了一個簡單範例:JsFiddle
這個範例是點擊無效的程式,而要修正這個問題,其實只要在藍色的div加入CSS3的屬性pointer-events即可:
pointer-events比較廣泛應用到html5的SVG裡面,此篇暫不探討,對其他標籤來講,有效的只有auto、none這兩個值,如果不加這個屬性,效果跟auto一樣,所以加上none屬性之後,就可觸發較低層級的click事件。
舊瀏覽器解決方式
好吧,寫網頁常常就要跟
html
<div id="control"> <input type="submit" onclick="alert('ok');return false;" value="送出"/> </div> <div id="block"> <div id="content"> <h3>優先順序較高的圖層</h3> </div> </div>
CSS
#control { position:fixed; } #block { position:fixed; z-index:50; display:inline-block; opacity:.80; pointer-events:none; /* 解決無法觸發click事件 */ } #content { margin:auto; width:300px; background-color:#7db0f4; border:1px solid #CCC; text-align:center; }
解決相容性的Script
$(function() { $('#content').click(function(event) { //先將這個div內容隱藏 $(this).hide(); //取得目前座標 var element = document.elementFromPoint(event.pageX, event.pageY); //再將div內容顯示 $(this).show(); //判斷這個座標是否在Submit按鈕 if ($(element).is('input[type="submit"]')) { //觸發click $(element).trigger('click'); } }); });
--
Reference
http://www.qianduan.net/css3-pointer-event-description.html
http://css-tricks.com/pointer-events-current-nav/
http://jsfiddle.net/DC9MF/4/
http://www.w3school.com.cn/jquery/traversing_is.asp
沒有留言:
張貼留言