0

ユーザーが特定のリンクをクリックしたときに、ユーザーのクリック位置に表示したいものを少しdiv保存しています。$tipこれは私がやっていることです。$this動的に作成された既知のオブジェクトであるプラグインの一部です:

$this.children('.menu').children('.details').bind('click', function(e){
   $tip = $('#resizetip');
   tiptext = "some text for my sweet little tip";
   $tip.css('top',e.clientY);
   $tip.css('left',e.clientX);
   $tip.html(tiptext);
   $tip.show();
});

ヒントは期待どおりに表示され、Chrome と FF では問題ありませんが、IE8 や IE9 でも機能しない理由がわかりません。試しconsole.log($tip.html());てみたところ、期待どおりの出力が得られたので、どこかにあることがわかります。座標を出力してみましたが、うまくいきました。

次に$('#resizetip').show();、コンソールから明示的に試してみましたが、うまくいきました! まさにあるべき場所に現れました。しかし、なぜそれがコードで機能しないのでしょうか? $tip.show();説明のつかない理由で最初の行を起動できなかった場合に備えて、別の行を追加しようとしましたが、それは役に立ちませんでした。

編集

eどこから来ているかを示すためにコードに編集を追加しましたが、e.clientXコンソールに出力すると出力が正常になるため、それが問題ではないことはわかっています。

4

3 に答える 3

1

これは間違いなく「e」が利用できないという問題です。ブラウザー全体でのこの問題の説明については、このサイトを確認してください: http://www.quirksmode.org/js/events_properties.html

基本的に、「e」が存在するかどうかを確認し、存在しない場合は window.event で割り当てる必要があります。

function doSomething(e) { if (!e) var e = window.event; .... }

于 2013-02-15T15:38:43.627 に答える
0

ほとんどの場合、次のようなものが必要です。

if (!e){ 
  var e = window.event
}

関数の上部近く。eは IE 用に定義されていない可能性があるため、に戻す必要がありますwindow.event。詳細はこちら

IE の clientX ドキュメント

于 2013-02-15T15:35:01.937 に答える
-2

いくつかの単位を設定し、代わりにpageXとpageYを使用してください

$tip.css({
    'top', e.pageY+ "px", 
    'left',e.pageX + "px"
);
于 2013-02-15T15:35:33.143 に答える