jQuery Position()不能在$(document).ready()上运行?

时间:2010-10-15 04:45:33

标签: jquery jquery-ui

我正在使用jQueryUI Position Utilities,但我不知道它为什么不在$(document).ready()上运行, 如果我使用firebug并执行position();再次手动,它工作正常。

更新:我尝试的代码只能在IE8上运行,它适用于firefox和chrome。

代码: http://jsbin.com/owoya3/edit

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script>
    <style type="text/css">
        #Parent
        {
             width: 300px; 
             background-color: #999; 
             border: 1px solid #aaa;
        }
        #Parent  tr  td 
        {
            width: 60px; 
            height: 60px;
             text-align: center; 
             border: 1px solid #aaa;
        }
        div.positionable
        {
            width: 60px;
            height: 60px;
            position: absolute;
            display: block;
            right: 0;
            bottom: 0;
            background-color: #bcd5e6;
            text-align: center;
        }
    </style>
    <script type="text/javascript">

        function position() {
            $("#BoxA").position({
                of: $("#CellA"),
                my: 'left top',
                at: 'left top',
                offset: '0 0'
            });
        }


        $(document).ready(function () {
            $(".positionable").css("opacity", 0.5);
            position();
        });
    </script>
    <title></title>
</head>
<body>
    <table id="Parent">
        <tr>
            <td id="CellA">A</td>
            <td id="CellB">B</td>
        </tr>
    </table>
    <div id="BoxA" class="positionable">
        <p>A(2)</p>
    </div>
    <div id="BoxB" class="positionable">
        <p>B(2)</p>
    </div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

问题是固定的,也许是IE或jquery的bug,但是很快,我是以脏的方式做的, 我两次调用position()可以修复。

    $(document).ready(function () {
        position();
        position(); //YES, 2 times.
    });

答案 1 :(得分:1)

而不是使用$(document).ready使用$(window).load 它们之间的微小差别实际上是不同的。您可以搜索depper信息,但您将解决您的问题。