我有一些像圈子和放大器的元素。用raphaeljs创建的画布上的路径。我只想在用户点击画布的空白区域时单击处理。
我尝试在raphael上的canvas / svg elemnt上设置click事件,但是当我在空白区域点击时,我只想点火。
示例:http://jsfiddle.net/vpGyL/1389/
var r = Raphael('testGraph', 500, 500);
r.circle(200,200,100).attr({"fill":"#0F0"});
r.path("M100,100L200, 200").attr({
stroke: "#F00",
fill: "none",
"stroke-width": 3
});
r.canvas.onclick = function(){alert("filled & empty area clicked togethere")};
答案 0 :(得分:1)
我建议您在单击某个元素时实现一个设置为true
的标志。它看起来像这样:
var elementClickFunction = function() {elementClicked = true;};
circle.click(elementClickFunction);
在画布点击功能中,您可以检查elementClicked
标志是真还是假并重置。
r.canvas.onclick = function(){
if(elementClicked) {
alert('element clicked!');
elementClicked = false;
}
else {
alert('whitespace clicked!');
}
};
这是一个实例: http://jsfiddle.net/vpGyL/1392/
答案 1 :(得分:1)
类似于罗德里戈的另一个解决方案就是检查事件目标,并检查其类型,ID或其他......
r.canvas.onclick = function( ev ){
if( ev.target.localName == 'svg' ) {
alert('svg');
};
};