jQuery .load来自另一个包含Javascript的页面

时间:2010-06-11 15:37:22

标签: jquery

我一直在使用jQuery .load()将内容加载到div中。偶尔加载的内容有一个document.ready()函数,它被调用,并正常工作(即调用ready()函数)。但是,当我在.load()中使用元素ID时,例如:.load(“test.php #content”),即使我将脚本标记放在正在的元素中,也不再执行Javascript加载。除了不在.load()中使用元素ID之外,有没有人能解决这个问题?提前谢谢。

这是动态内容(loadDialogTest.php):

    <div id="test">
        <div>
         Hello, World!
        </div>


        <script type="text/javascript">
            $(document).ready (function () {
                alert ("ready");
            });
        </script>
    </div>

这里是加载它的页面(未指定元素ID)(在保持表单的同时尽可能缩短:

    <head>
        <script type="text/javascript">
            $(document).ready (function () {
                $("#openDialog").click (function () {
                    $("<div></div>")
                        .load ("loadDialogTest.php")
                        .appendTo ($("#containingDiv"))
                        .dialog ({
                        autoOpen: 'false',
                        title: 'Test This!',
                        close: function () {
                            $(this).dialog ('destroy').remove ();
                        }
                    });
                });
            });
        </script>
    </head>

    <body>
        <a href="#" id="openDialog">Open it</a>

        <div id="containingDiv">
        </div>
    </body>

如果我将.php文件之后的#test作为要加载的div,则不再调用jQuery ready()函数。

1 个答案:

答案 0 :(得分:0)

我在某处读到了你必须首先删除()脚本标记,将加载的HTML附加到DOM,然后添加删除的脚本。一旦找到链接,我就会更新。

<强>更新

无法找到该链接,但您提供的代码对我来说很好。我正在使用Jquery 1.4.2和Jquery UI 1.8.1。我将您的代码粘贴到我的网站中并且它可以正常工作,提醒“准备就绪”。

更新2

好的,我已经使用你的代码创建了一个测试页面,似乎工作正常 - Load test page。您唯一注意到的是,因为它是一个CMS,它会在加载外部内容后立即重定向您。但警报框确实会触发。

更新3

戴夫,现在看看我的测试页面。我在load()的末尾添加了一个函数,它从加载的html中提取脚本并将它们添加到页面主体。这似乎有效,但我确实必须将Alert从文档ready()函数中拉出来。