0

これは、タグ内の onclick リスナーです。

onclick="showMap('change-img-box',event); return false;"

これはjqueryです

function showMap(id,e){
var hpos = e.pageX, ypos = e.pageY; alert(hpos+'----'+ypos);
if($("#"+id).is(":visible")){
    $("#"+id).hide();
}else{
    $("#"+id).css({"top": ypos+10, "left": hpos+10}).hide().fadeIn(300);
}
}

理由はわかりませんが、IE 7 では hpos と ypos の両方が未定義であると言われています。どうすればこれを修正できますか。前もって感謝します。

4

2 に答える 2

3

古いバージョンのIEはclientXclientY代わりにを使用します。クロスブラウザの互換性のために使用する関数は次のとおりです。

window.getMouseCoords = function(e) {
    if( !e) return {x:0,y:0};
    if( e.pageX || e.pageY) {
        return {x:e.pageX,y:e.pageY};
    }
    if( e.clientX || e.clientY) {
        return {
            x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,
            y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop
        };
    }
    return {x:0,y:0};
};
于 2013-02-19T21:20:43.097 に答える
2

すでに jquery を使用しているため、インラインの onclick の代わりに jquery を使用してクリック イベントを初期化できます。jQuery は、W3C 標準に従ってイベント オブジェクトを正規化します ( http://api.jquery.com/category/events/event-object/ ) 。

$('#thing-you-are-clicking').click( function(e) {
    var hpos = e.pageX, ypos = e.pageY;
    // Do your stuff here...
});

その「id」データが必要な場合は、data-* プロパティを使用してボタンの dom に入れることができます。

<a href="#" id="thing-you-are-clicking" data-id="change-img-box">Hi</a>

その後、 .data('id') を使用してデータにアクセスできます

$('#thing-you-are-clicking').click( function(e) {
    var hpos = e.pageX, ypos = e.pageY;
    var id = $(this).data('id');
    // Do your stuff here...
});
于 2013-02-19T21:26:24.163 に答える