所以这个第一个jQuery有效。它将另一个html页面的特定部分加载到#main_text的id。
$(function() {
$('[id^="nav_"]').on("click", function() {
var letter = this.id.split('_')[1];
$("#main_text").load("page" + letter + ".html #main_text p,h2,h3,span #hidden");
});
});
我现在想要将多个html文件加载到#main_text中。所以我试着把它们推入一个数组,然后.load那个数组。它不起作用。这甚至可能吗?
$(document).ready(function() {
var array = [];
array.push('page_mark1.html');
array.push('page_mark2.html');
$('#mark').on("click", function() {
$("#main_text").load('array');
});
});
答案 0 :(得分:1)
load
方法不接受网址数组。另请注意,如果要传递数组,则应将array
而不是"array"
(字符串)传递给函数。
您可以使用$.get
功能代替load
方法:
// create an array of deferred objects ( array of Ajax deferreds )
function getDef(urls) {
return urls.map(function(url) { return $.get(url) });
}
// Pass the array to $.when
// the callback is called when all the requests are complete
$.when.apply($, getDef(array))
.then(function() {
// concatenate the strings based on the unknown length of arguments
// `[].slice.call(arguments)` converts the special
// `arguments` object into a regular array
var allContents = [].slice.call(arguments).join('');
$("#main_text").html(allContents);
});
您还可以定义jQuery函数:
$.fn.loadMany = function(urls) {
var $this = this;
urls = urls.map(function(url) { return $.get(url) });
$.when.apply($, urls)
.then(function() {
$this.html([].slice.call(arguments));
});
return $this;
}
$("#main_text").loadMany(array);