.load()和$ .get()之间的区别

时间:2013-01-12 08:21:06

标签: jquery html5 cordova jquery-mobile

我正在创建一个包含多个HTML页面,jquery和Phone gap的移动应用程序。我不想在我的应用页面中冗余地复制粘贴相同的页脚,所以我创建了一个全局的footer.html并尝试在文档.ready()上加载该文件的内容。

页脚HTML

<div data-role="navbar" data-grid="d">
    <ul class="apple-navbar-ui comboSprite">
        <li><a href="../dashboard.html">Home</a></li>
        <li><a href="../contacts/contacts.html">Contacts</a></li>
        <li><a href="../applications/applications.html">Applications</a></li>
        <li><a href="settings.html">My Account</a></li>
    </ul>
</div>

主要HTML

<div data-role="page">
    <div id="footer" data-role="footer">
    </div>
</div>

$(document).ready(function () {
   $('#footer').load("footer.htm");
   $('#footer').trigger('create');
});

它加载了footer.html的内容,但Jquery mobile的UI无法呈现。

但是当我将文档就绪代码更改为此

$(document).ready(function () {
   $.get('footer.htm', function (retData) {
      $('#footer').append(retData);
      $('#footer').trigger('create');
   });
});

效果很好。

那么这两种方法有什么区别?为什么一个工作而另一个工作失败?

3 个答案:

答案 0 :(得分:4)

实际上不同之处在于,在您的$.get()中,您有一个回调函数,并且在$('#footer').trigger('create');中放置了.load(),而您没有放回调函数。

你应该这样做:

$(document).ready(function(){
    $('#footer').load("footer.htm", function(){
        $(this).trigger('create');
    });
});

答案 1 :(得分:4)

方法之间的差异:
.get() - 加载所有内容
.load() - 可以加载部分内容$('#result').load('file.html #container');

答案 2 :(得分:0)

.load() - 从服务器获取数据的最简单方法,但与.get()方法不同,允许我们指定要插入的远程文档的一部分。 比如“$( "#result" ).load( "ajax/test.html #container" );

.get() - 使用HTTPGET请求从服务器加载数据。从服务器加载所有内容。