0

我正在使用 Raphael.js 来处理 SVG 地图。它在所有桌面浏览器中都表现出色。当点击地图上的给定区域时,我有一个点击功能来触发一些事情。它依赖于抓取被点击对象的 (this.id) 并返回一些结果。

问题是它适用于桌面浏览器 Safari、Opera、IE9 和 Chrome。我尝试在移动 android (4.0.3) 浏览器上打开相同的东西,但 (this.id) 的值不一样,所以我点击的区域不是我得到结果的区域。桌面上对象的 this.id 不等于移动浏览器上同一对象的 this.id。

我已经使用警报验证了这些值。是什么赋予了?我该如何解决这个问题或以更简单的方式找到点击项目的 ID?

这是重要的代码片段:

drawnl[i].click(function(){//click function

if(dcount == mcount){
    idx = (highestid-1-this.id); // this takes the total number of markets generated up to this point, subtracts the # of markets for this current map

}else if(gens > 2){

    idx = (mcount-1)-((dcount + (gens-2))-(this.id)); // this takes the total number of markets generated up to this point, subtracts the # of markets for this current 

}else{
    idx = mcount-1-(dcount-this.id);
}   

}

我已经确认所有其他值都是一致的,除了当我获取 this.id 时。我正在使用 Raphael.js ( http://raphaeljs.com/reference.html#Element.click )的内置处理程序

4

2 回答 2

0

id 应该在事件中。在您的事件处理程序中

var id = evt.target.id;

于 2012-08-10T15:26:45.610 回答
0

您可以发布一个 jsfiddle 以便我们可以看到您在做什么吗?

在黑暗中射击:您可以使用事件对象,通常将第一个参数传递给事件侦听器回调函数。然后您可以执行 eventObject.currentTarget.id,它应该是对触发点击事件的节点的引用。

于 2012-08-10T15:28:13.570 回答