您可以使用 jquery 方法.load()从服务器加载数据并将返回的 HTML 放入匹配的元素中。见:http ://api.jquery.com/load
考虑到.load()方法通过Ajax获取资源。由于浏览器安全限制,大多数“Ajax”请求都受同源策略的约束;请求无法从不同的域、子域、端口或协议成功检索数据。
在这里您可以找到克服跨域请求的有用方法:Loading cross domain html page with jQuery AJAX
现在我们来看一个例子:
假设你有一个名为
index.html的页面......
<header>
<nav>
<span>Select language </span>
<select id="nav-lang">
<option value="english">English</option>
<option value="danish">Danish</option>
</select>
</nav>
</header>
<section>
<article id="dynamic-content" class="wrapper-style">
Dynamic content will be placed here!
</article>
</section>
<aside>
<div class="bgLoading"></div>
<div id="imgLoading">
<img src="http://www.ajaxload.info/images/exemples/24.gif" />
</div>
</aside>
...您还有另一个名为lang.html的文件,它只是一个带有 html 的视图:
<div>
<div id="english">
Opening hours in English
</div>
<div id="danish">
Opening hours in Danish
</div>
</div>
...和一些CSS来添加糖;)
#imgLoading {
z-index: 3000;
position: fixed;
top: 47.10%;
left: 48.56%;
display: none;
}
.bgLoading {
z-index: 2999;
position: fixed;
top: 0; bottom: 0; left: 0; right: 0;
background-color: White;
opacity: 0.36;
filter: alpha(opacity=36);
display: none;
}
.wrapper-style {
padding: 8px 12px;
border: dotted 1px #444;
}
现在,我将使用jQuery.load()方法将lang.html的内容加载到index.html的内容部分。
//Click handler for the navigation #nav-lang
$(document).on("change.language", '#nav-lang', function() {
var lang = $(this).val();
fnShowLoading(true);
setTimeout(function() { //remove this line: used for loading...
//loads the content dynamically
$('#dynamic-content').load('views/lang.html #' + lang, function() {
fnShowLoading(false);
});
}, 2000); //remove this line: used for loading...
});
//Shows or hides the loading indicator
function fnShowLoading (show) {
var display = show ? 'block' : 'none';
$('#imgLoading, .bgLoading').css('display', display);
}
如您所见,这里唯一重要的行如下:
$('#dynamic-content').load('views/lang.html', function() { });