Raphael - 如何处理空白区域的点击?
Raphael - How to handle click on empty area?
我的 canvas 上有一些用 raphaeljs 创建的元素,例如圆圈和路径。当用户单击 canvas.
的空白区域时,我只想处理单击
我尝试在 raphael 中的 canvas/svg 元素上设置点击事件,但它到处都是火,我只想在空白区域点击时火。
示例: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")};
我建议您实现一个标志,该标志会在单击元素时设置 true
。它可能看起来像这样:
var elementClickFunction = function() {elementClicked = true;};
circle.click(elementClickFunction);
在 canvas click 函数中检查 elementClicked
标志是真还是假并重置它。
r.canvas.onclick = function(){
if(elementClicked) {
alert('element clicked!');
elementClicked = false;
}
else {
alert('whitespace clicked!');
}
};
这是一个实际的例子:
http://jsfiddle.net/vpGyL/1392/
与 Rodrigo 类似的另一个解决方案是检查事件目标,并检查其类型或 ID 或其他...
r.canvas.onclick = function( ev ){
if( ev.target.localName == 'svg' ) {
alert('svg');
};
};
我的 canvas 上有一些用 raphaeljs 创建的元素,例如圆圈和路径。当用户单击 canvas.
的空白区域时,我只想处理单击我尝试在 raphael 中的 canvas/svg 元素上设置点击事件,但它到处都是火,我只想在空白区域点击时火。
示例: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")};
我建议您实现一个标志,该标志会在单击元素时设置 true
。它可能看起来像这样:
var elementClickFunction = function() {elementClicked = true;};
circle.click(elementClickFunction);
在 canvas click 函数中检查 elementClicked
标志是真还是假并重置它。
r.canvas.onclick = function(){
if(elementClicked) {
alert('element clicked!');
elementClicked = false;
}
else {
alert('whitespace clicked!');
}
};
这是一个实际的例子: http://jsfiddle.net/vpGyL/1392/
与 Rodrigo 类似的另一个解决方案是检查事件目标,并检查其类型或 ID 或其他...
r.canvas.onclick = function( ev ){
if( ev.target.localName == 'svg' ) {
alert('svg');
};
};