我有兩個重疊的svg.g
組,其中具有不同的onclick
事件。我使用opacity
屬性定期將這些組混合到可視化中。目前,只有頂層渲染組的onclick
事件被調用,但我想調用當前可見組的事件。或者,我總是可以調用這兩個事件,並在被調用的函數中使用條件語句,這取決於opacity
屬性。通過重疊的svg元素傳播事件
下面是一個例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
<div id="body"></div>
<script type="text/javascript">
var canvas_w = 1280 - 80,
canvas_h = 800 - 180;
var svg = d3.select("#body").append("div")
.append("svg:svg")
.attr("width", canvas_w)
.attr("height", canvas_h)
var visible_group = svg.append("g")
.attr("opacity", 1)
.on("click", function(d){console.log("Click")})
.append("rect")
.attr("x", 0)
.attr("y", 0)
.attr("width", 100)
.attr("height", 100)
.style("fill", "blue");
var invisible_group = svg.append("g")
.attr("opacity", 0)
.on("click", function(d){console.log("Invisiclick")})
.append("rect")
.attr("x", 0)
.attr("y", 0)
.attr("width", 100)
.attr("height", 100)
.style("fill", "red");
</script>
</body>
</html>
此代碼將呈現藍色矩形,可見基。帶有紅色矩形的組是隱藏的。如果您單擊藍色矩形,「Invisiclick」將被打印到控制檯,隱藏組的onclick
事件。我想打印「點擊」到控制檯,或者「Invisiclick」和「Click」。
我該怎麼做?
你也可以把'pointer-events:none'放在隱形組上。即使你想留下它們,它仍然會使它們從鼠標事件的角度來看是透明的。 –