2012-02-07 71 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