jQuery尴尬的行为

时间:2010-01-22 13:55:19

标签: jquery cross-browser jquery-selectors

我正在尝试在ajax,整个页面中加载一个页面,并在加载的页面中找到它。一些实际练习。

ajax调用的结果是一个包含页面html的字符串。

为了简单起见,我做了一个例子,其中包含一个包含页面内容的字符串。

<html>
    <head>
        <title>some test</title>
        <style type="text/css">
            .dv810 { height:810px; }            
        </style>
        <script src="Scripts/Ref/jquery.js"></script>
        <script type="text/javascript">
            var sPage =
            +'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
            + '\n<html xmlns="http://www.w3.org/1999/xhtml">'
            + '\n<head>'
            + '\n    <title>some test</title>'
            + '\n    <style type="text/css">'
            + '\n'
            + '\n    #dvMain { height:830px; }'
            + '\n'
            + '\n    </style>'
            + '\n</head>'
            + '\n<body>'
            + '\n    <div class="container_12 mainContainer">'
            + '\n        <div id="dvMain" class="dv810"></div>'
            + '\n        <br/>'
            + '\n    </div>'
            + '\n</body>'
            + '\n</html>';

            alert('#dvMain: ' + $('#dvMain', $(sPage)).css('height'));

        </script>
    </head>
    <body>
    </body>
</html>

当我试图拉动一个人的css属性时,我有这种尴尬的行为,比如身高:

  • Firefox:#dvMain.height:810px
  • Chrome:#dvMain.height:
  • IE8:#dvMain.height:830px
  • IE8(使用IEtester):#dvMain.height:830px
  • IE7(使用IEtester):#dvMain.height:830px
  • IE6(使用IEtester):#dvMain.height:830px

看起来似乎:

  • IE了解字符串中的css,hell知道怎么样(虽然这是一种奇怪的行为,我有点喜欢它,虽然我觉得我不会用它太多),
  • Firefox表现得像我认为的那样准确,从呈现页面中的样式中获取类
  • Chrome让我惊讶,不明白或不联系它,恩,嗯,好吧,什么都不显示
    有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

根据您的不同结果判断,我认为这是一个dom处理时间的问题,我想知道结果是否有所不同,修改代码是这样的:

var $sPage = $(sPage);
alert('#dvMain: ' + $('#dvMain', $sPage).css('height'));

OR

$(sPage).ready(function(){
  alert('#dvMain: ' + $('#dvMain', $(sPage)).css('height'));
});