Javascript jQuery-可能需要一些内容加载器方面的帮助
谈到JavaScript,尤其是语法,我不是很优秀。所以我在努力学习。在这个过程中,我试图实现一个内容加载器,它基本上从一个div中删除所有内容,并从另一个div中插入另一个文档中的内容 我在这个网站上尝试过这样做: www.matkalenderen.no-检查那里的链接。看看会发生什么 我在这个网站上举了一个例子: 但我不确定这个例子是否真的像我想的那样有效。我的意思是,如果代码只是删除了一个div中的现有内容,并插入了另一个div中的内容,那么为什么本例中的其他网页包括doctype和heading等?难道你不需要那个div和它的内容吗?没有“周围”的其他东西?也许我不明白这是怎么回事。我觉得它真的很管用 但这是我的代码:Javascript jQuery-可能需要一些内容加载器方面的帮助,javascript,jquery,html,css,Javascript,Jquery,Html,Css,谈到JavaScript,尤其是语法,我不是很优秀。所以我在努力学习。在这个过程中,我试图实现一个内容加载器,它基本上从一个div中删除所有内容,并从另一个div中插入另一个文档中的内容 我在这个网站上尝试过这样做: www.matkalenderen.no-检查那里的链接。看看会发生什么 我在这个网站上举了一个例子: 但我不确定这个例子是否真的像我想的那样有效。我的意思是,如果代码只是删除了一个div中的现有内容,并插入了另一个div中的内容,那么为什么本例中的其他网页包括doctype和h
$(document).ready(function() {
var hash = window.location.hash.substr(1);
var href = $('#dynloader a').each(function(){
var href = $(this).attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad = hash+'.html #container';
$('#container').load(toLoad)
}
});
$('#dynloader a').click(function(){
var toLoad = $(this).attr('href')+' #container';
$('#container').hide('fast',loadcontainer);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn('normal');
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadcontainer() {
$('#container').load(toLoad,'',showNewcontainer())
}
function showNewcontainer() {
$('#container').show('normal',hideLoader());
}
function hideLoader() {
$('#load').fadeOut('normal');
}
return false;
});
});
$(文档).ready(函数(){
var hash=window.location.hash.substr(1);
var href=$('#dynloader a')。每个(函数(){
var href=$(this.attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad=hash+'.html#container';
$(“#容器”)。装载(toLoad)
}
});
$('#dynloader a')。单击(函数(){
var toLoad=$(this.attr('href')+'#container';
$(“#container”).hide('fast',loadcontainer);
$(“#加载”).remove();
$(“#包装器”).append('LOADING…');
$('加载').fadeIn('正常');
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadcontainer(){
$('#container').load(toLoad',showNewcontainer())
}
函数showNewcontainer(){
$(“#容器”).show('normal',hideLoader());
}
函数hideLoader(){
$('加载').fadeOut('正常');
}
返回false;
});
});
jQuery.load()
中有一些额外的功能来支持这一点。在您的示例中,这里有一个重要部分:
hash+'.html#container'
容器前面的空格意味着jQuery将获取该URL,使用id=“container”
查找元素,并仅获取该元素的内容,而丢弃页面的其余部分。这使得.load()
能够以一种更通用的方式工作,而无需专门为ajax加载而设计
在您的情况下,我认为您只需要从末尾删除
#内容
,除非您正在查找该元素。并不是说“查找内容”,这只是他们用来查找元素的ID。它可能是#divToLoad
,在我看来这是一个更清晰的例子。您是否查看了原始源代码或我稍微修改过的版本?我不确定我是否理解最后一部分“在您的情况下,我认为您只需要从末尾删除内容”,因为我的版本中没有内容。@Kenny-在您发布的代码中,这是在第6行:var-toLoad=hash+'.html#container'
如果您没有在内容中查找该ID,那么它应该是:var-toLoad=hash+'.html'
单击处理程序中的相同内容:var-toLoad=$(this.attr('href')+'#container'
应该是var-toLoad=$(this.attr('href')代码>好的,我明白了。但是,更进一步。代码从文件中的div获取内容。那很好。但这需要大量包含内容的单个文件。即使每个文件中只有一点点内容。是否可以将所有内容放在一个文件中?只把它们放在不同的分区里?最好不用在js代码中指定ID?但不确定如何实现,可能是通过href?@Kenny-是的,您可以通过不同的方法($.get()
或$.ajax()
)实现这一点,但您需要ID或类或一些独特的东西,以便找到所需的元素。为什么我需要不同的方法?只要读一下get方法,它看起来和load一样,不是吗?