2012-02-07 75 views
1

我有代碼應該突出顯示選擇並將彈出窗口對齊到選擇的頂部。代碼如下所示'position()。top'是空還是不是對象?

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

火狐似乎是確定的代碼,但我得到發現以下運行時錯誤

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

link但我的編輯是不成功的。還有另一種方法可以做到嗎?

+0

我確定'$(「tr [style * = Blue]」)'必須返回空集。可以檢查它的長度? – ShankarSangoli 2012-02-07 15:49:55

+0

你可以提供[jsFiddle](http://jsFiddle.net)的例子嗎? – beeglebug 2012-02-07 15:50:06

+0

$(element).position()在某些情況下確實可以爲null/undefined。我認爲你沒有提供足夠的背景信息。可能是單步執行或輸出到控制檯,看看這個'tr [style * = Blue]'是否返回任何東西('.length> 0')。看看在「tr」之後刪除空格字符會發生什麼。 – 2012-02-07 15:50:29

回答

4

您的.css()參數向後;它應該是.css(<name of property>, <value>)

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

此外,.position()將返回null如果$("tr [style*=Blue]")不返回任何東西,導致錯誤。先試着檢查它的長度。

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

EDIT注 火狐使用初始帽上的顏色(藍色),但IE使用所有小寫(藍色)。

+0

這確實使我朝着正確的方向發展,但我在Firefox中使用了「藍色」風格,而在IE中使用了「藍色」風格。謝謝您的幫助! – MrM 2012-02-08 14:02:52