2016-07-31 69 views
0

我有一個可點擊的按鈕。我想動態地覆蓋它也是可點擊的。當覆蓋層位於頂部並點擊時,我希望觸發覆蓋層onclick,並觸發按鈕onclick。創建點擊覆蓋並點擊進入按鈕也

現在,如果我使用onclick處理程序將覆蓋圖置於頂部,則點擊不會進入下面的按鈕。 如果我在疊加層上使用pointerEvents =「none」,則點擊會通過,但不會觸發覆蓋層onclick。

如何在覆蓋層位於頂部時同時觸發兩個onclicks?

<html><body> 

    <input type=button value=clickme style="position:absolute;top:50px;left:25px;z-index:-1" onclick="alert('button')" > 
    </body></html> 

    <script> 


    function createDiv(){ 
     alert("creating div"); 
     divTag = document.createElement("div"); 
     divTag.id="overlay"; 
     document.body.appendChild(divTag); 
     divTag.setAttribute("onclick","alert('overlay')"); 
     divTag.style.backgroundColor="rgba(255, 255, 0, 0.5)"; 
     divTag.style.top="0px"; 
     divTag.style.left="0px"; 
     divTag.style.width="100px"; 
     divTag.style.height="100px"; 
     divTag.style.zIndex=100; 
     //divTag.style.pointerEvents="none"; 
     //divTag.style.pointerEvents="auto"; 

    } 
    setTimeout(createDiv,2000); 
    </script> 

https://jsfiddle.net/q6Levpds/

回答

0

很簡單,不要觸摸按鈕的z-index,並設置覆蓋z-index爲-1

JS: 

function createDiv(){ 
    alert("creating div"); 
    divTag = document.createElement("div"); 
    divTag.id="overlay"; 
    document.body.appendChild(divTag); 
    divTag.setAttribute("onclick","alert('overlay')"); 
    divTag.style.backgroundColor="rgba(255, 255, 0, 0.5)"; 
    divTag.style.top="0px"; 
    divTag.style.left="0px"; 
    divTag.style.width="100px"; 
    divTag.style.height="100px"; 
    divTag.style.zIndex=-1; 
    //divTag.style.pointerEvents="none"; 
    //divTag.style.pointerEvents="auto"; 

} 
setTimeout(createDiv,2000); 

HTML:

<body> 
<input type=button value="clickme" style="position:absolute;top:50px;left:25px" onclick="alert('button')" /> 
</body> 

https://jsfiddle.net/q6Levpds/1/

+0

至少在firefox中,您的更改示例中的疊加層位於按鈕後面,並且僅觸發按鈕單擊。我試圖讓覆蓋點擊也觸發。 – techdog

+0

@ techdog你想激活覆蓋點擊按鈕時單擊 –