2012-01-04 9 views
0

私のプロジェクトでは、cssのワイルドカードセレクタとjqueryのワイルドカードセレクタを使用しています。 1つの結果しかないのであればすべてうまくいくようですが、2つのダイアログがあれば、奇妙な結果が得られます。エラーを見るために複数のdivと複数のダイアログ

Not working sample

  1. :セレクタと2つのダイアログとdivタグを使用した作業

    Working sample

    :セレクタとだけ1つのダイアログとのdivを使用した作業

    2つのダイアログを並べて移動するだけです。最初のダイアログ内を最初にクリックすると、フォームフィールドに正しい値が表示されます。その後、2番目のダイアログ内をクリックします。値は間違っています。私は第1ダイアログ内のdivに従って値を計算していると思います。

  2. 第2に、Firefoxでは、第1ダイアログ内をクリックした後に奇妙な結果が出ます。たとえば、私はx = 12になります。[2139219329193]単なる整数ではなくいくつかの乱数。

望ましい結果:

あなたは、私は、ダイアログ内のdiv要素に従って正しい座標を取得したいダイアログ内をクリックします。私は2つの画像のサイズである0,0と320,400の間の座標を必要とします!

+1

期待される結果が何であるか教えてください。 –

+0

ダイアログ内をクリックすると、ダイアログ内のdivに従って正しい座標を取得したいと思います。私は2つの画像のサイズである0,0と320,400の間の座標を必要とします! – glarkou

+0

なぜ '.dialog( 'open')を何度も呼びますか? – Alnitak

答えて

1

これを交換してみてください。これにより

var o = $("[id^=pointer_div]").dialog("open").offset(); 

var o = $(this).dialog("open").offset(); 

前者は、両方のポインタDIVの再び、両方にdialog("open")を呼び出し見つけ、その後、最初のためoffset()を返します。要素のうちが見つかりました。

clickハンドラの内部で使用される場合、第2のバージョンはthisを使用しますが、クリックされた特定の要素を常に指します。

+0

ありがとうございました。私は 'this.dialog(" open ").offset();を使用していましたが、動作しませんでした。 「これ」と「$(これ)」の違いを教えてください。最後に、Firefoxの数字で奇妙な問題を解決する方法を知っていますか? – glarkou

+1

違いは、この場合、 'this'は[プレーンDOMノード](https://developer.mozilla.org/en/DOM/Node)です。 '$()'に渡すと、jQueryオブジェクトにラップされます。これにより、 'dialog'と' offset'(そして他のものの読み込み)を呼び出すことができます。 – PPvG

+0

Firefoxの「問題」で、['Math.round()'](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Math/round)を試してみましたか? – PPvG