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

Can you post a jsfiddle so we can see what you are doing?

Shot in the dark: you could use the event object, usually the first argument passed to an event listener callback function. You can then do eventObject.currentTarget.id, which should be a reference to the node on whom the click event was triggered.

于 2012-08-10T15:28:13.570 に答える