我有一排<a>元素,它們有onclick處理程式:
<a onclick="selectCoin('mer');"/span>>
<div id="MER"/span>>
...
</div>/span> ...
</a>/span>
<div>子的內部被持續覆寫以更新按鈕內部的一些文本。更新是通過查詢#MER選擇器,并將其分配給innerHTML來完成。我注意到,如果<div>元素在后臺被更新,onclick處理程式并不總是運行。很多時候,在onclick處理程式真正被呼叫之前,我必須點擊它兩到三次。如果我將 <div> 元素設定為靜態,那么 onclick 處理程式就能穩定可靠地運行。
為什么更新<div>子元素會導致onclick處理程式停止持續作業?我怎樣才能解決這個問題,同時仍然更新按鈕的內容呢?
uj5u.com熱心網友回復:
為了產生一個點擊事件,一個元素必須接受一個mousedown,然后是一個mouseup。
如果該元素在mousedown之后消失,并被一個新的元素所取代,那么點擊事件就不會被發送。
你可以在<a>元素上做你自己的mousedown/mouseup檢測,但是如果該元素內部沒有任何東西是真正可點擊的,你可以禁用子元素上的滑鼠事件,這樣它們都會發生在<a>元素上
在你的 "MER "div上:
style="pointer-events:none;"
作業方法:
https://jsfiddle.net/8h17rcpz/
uj5u.com熱心網友回復:
click事件只有在mousedown和mouseup一對事件在同一個元素上連續觸發時才會產生,如果它在向下和向上的事件中被調換,這就不會發生。
最簡單的解決方案是將HTML源中的onclick替換為onmouseup。根據所提供的資訊,我們無法評估這可能產生的副作用或不良行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306613.html
標籤:
