jQuery 加载坏了?

Posted

技术标签:

【中文标题】jQuery 加载坏了?【英文标题】:jQuery load broken? 【发布时间】:2014-05-30 07:19:18 【问题描述】:

所以我在 jQuery 上注意到,当他们替换 .html() 时,甚至他们的示例都不能正常工作。我试图帮助用户解决 AJAX 问题,但突然间 AJAX 在我的测试页面和他的示例中都没有表现。事实上,无论是通过$('#feedback').load() 设置还是使用函数附加数据,它都不会添加对#feedback 的响应!但是,如果您提醒数据,果然,您拥有整个页面(也是另一个问题,因为我们应该只抓取正文!)

jQuery 发生了什么?

触发页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script>
            $(function () 
                $('#button').click(function () 
                    $('#feedback').load('test.htm #body', function(data)
                        alert(data);
                        $('#feedback').html(data); // Append again... y u no work!?

                    );
                );
            );
        </script>
    </head>

    <body>
        <input id="button" type="submit" value="Go" />
        <div id="feedback">Welcome</div>
    </body>

</html>

测试页test.htm

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body id="body">
        Welcome again <label id="var_name" name="callBack_data" />
  </body>
</html>

此操作的结果将alert() 整个页面 而不仅仅是正文。它也不会将数据附加到 div。

通过将按钮类型更改为type="button",我们可以将一些数据加载到 div,但是没有正确的选择。

更新了可以工作的代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script>
            $(function () 
                $('#button').click(function () 
                    $('#feedback').load('test.htm #body');
                );
            );
        </script>
    </head>

    <body>
        <input id="button" type="button" value="Go" />
        <div id="feedback">Welcome</div>
    </body>

</html>

测试页更新

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body>
        <div id="body">
            Welcome again <label id="var_name" name="callBack_data" />
        </div>
  </body>
</html>

【问题讨论】:

您不是在追加,而是在替换 HTML。在这种情况下,您将 #feedback 的 HTML 替换为请求的整个页面,而不是加载请求中指定的位。 【参考方案1】:

.load 已经做了 .html 部分,你不需要自己做。

$('#feedback').load('test.htm #body');

此外,&lt;body&gt; 在您执行 $("&lt;div&gt;").html("&lt;body&gt;&lt;/body&gt;") 时会被删除,因此通过 id 定位它是行不通的。使用 id="body" 将文本包装在 div 中

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body>
    <div id="body">
        Welcome again <label id="var_name" name="callBack_data" />
    </div>
  </body>
</html>

这将导致

<div id="feedback">
    Welcome again <label id="var_name" name="callBack_data" />
</div>

将显示为:

再次欢迎

【讨论】:

重点是,事实并非如此。请尝试代码或阅读我的解释。 实际上 load() 的工作方式与@JordanThompson 的预期一样。你需要看看这些东西是如何工作的。 @JayBlanchard 不,不是。它不委托#body 也不将HTML 输入到div。 See their documentation 您甚至不会注意到他们的“将主页的页脚导航加载到有序列表中”。正在工作 演示不起作用,因为它是为与旧的 api 站点一起工作而编写的,新的没有被引用的元素。 (有人应该对此进行错误报告) @KevinB 解释了很多。我提交了需要更新的页面。

以上是关于jQuery 加载坏了?的主要内容,如果未能解决你的问题,请参考以下文章

React Native 调试器坏了

lua分页加载

jquery怎么判断页面加载完全

jquery是怎么实现:页面加载完毕,而图片未加载完成时,触发的事件?

jquery是怎么实现:页面加载完毕,而图片未加载完成时,触发的事件?

如何让jquery在页面没加载完就可以执行,每次要等到整个hmtl加载完才可以执行jquery,这样很慢