2012-02-07 27 views
1

私は、選択範囲を強調表示し、ポップアップを選択範囲の一番上に揃えるコードを用意しました。'position()。top'はnullまたはオブジェクトではありませんか?

$('#pnlAdd .modalDialog').css($("tr [style*=Blue]").position().top + "px" ,"top"); 

FirefoxはコードでOKのように見える次のようにコードがあるが、私はこのlinkが、私の編集に失敗したが見つかり以下のランタイムエラー

'position().top' is null or not an object. 

を取得します。それを行う別の方法がありますか?

+0

確かに '$(" tr [style * = Blue] ")'は空集合を返さなければなりません。その長さを確認できますか? – ShankarSangoli

+0

[jsFiddle](http://jsFiddle.net)で例を挙げることはできますか? – beeglebug

+0

$(element).position()は実際にはnull/undefinedになることがあります。あなたが十分なコンテキスト情報を提供したとは思わない。おそらくステップスルーまたはコンソールに出力して、 'tr [style * = Blue]'が何か( '.length> 0')を返すかどうかを確かめてください。 "tr"の後にスペース文字を削除するとどうなるか見てみましょう。 –

答えて

4

あなたの.css()引数は後方にあります。それは$("tr [style*=Blue]")がエラーを引き起こし、何も返さない場合にも、.position()はnullを返します.css(<name of property>, <value>)

$('#pnlAdd .modalDialog').css("top", $("tr [style*=Blue]").position().top + "px"); 

でなければなりません。最初に長さを確認してみてください。

var elements = $("tr [style*=Blue]"); 
if (elements.length) { 
    $('#pnlAdd .modalDialog').css("top", elements.position().top + "px"); 
} 

EDIT注 Firefoxは色(ブルー)に初期キャップを使用しますが、IEはすべて小文字(青)を使用します。

+0

これは私を正しい方向に導いてくれましたが、私はFirefoxでは "Blue"、IEでは "blue"というスタイルを持っています。助けてくれてありがとう! – MrM

関連する問題