我知道以前有人问过这个问题,我试着按照建议做,但我似乎无法让它发挥作用。
基本上我有这样的链接:
<ul>
<li class='current'><a href='portfolio/index.html'>portfolio</a></li>
<li><a href='about/index.html'>about</a></li>
</ul>
然后我得到了这样一个div:
<div class='loaded_content'></div>
我想做的是,当我按下链接时,将链接href中的页面加载到div中。我还想阻止浏览器以正常方式浏览链接。
这是我的脚本,它与jquery库一起加载在html头中:
$(document).ready(function() {
$('a').click(function(event){
event.preventDefault();
$('.loaded_content').load($(this).attr('href'));
return false;
});
});
我做错了什么?
编辑:
好的,所以我把脚本放在document.ready中,preventdefault现在正在工作,但href仍然没有加载到div中。
编辑:
好吧,我现在已经部分完成了。html现在被正确地加载到div中,但我现在面临一个新的问题。我正在加载的页面在一个子目录中,还有它自己的.css文件和一些图像。如何确保css也被加载?
我之所以想这样做,是因为我在网站上的页面在所有页面上都有相同的结构,我想拥有一个框架网站,我只加载每个页面的内容,以防止重复加载相同的内容。也许还有另一种更好的方法?
我认为问题在于函数没有被调用。
如果您试图将函数绑定到某些元素,而这些元素还不在文档中,则可能会发生这种情况。你说这个代码是头,所以,我认为是这样的。
至少有两种选择:
第一:在文档中编写javascript代码。ready函数:
$(document).ready(function(){
// your on click function here
$('a').click(function(){
$('.loaded_content').load($(this).attr('href'));
return false;
});
});
第二:移动您的javascript代码,在链接之后编写。
您可以使用event.preventDefault();
来防止链接的默认行为:
$('a').click(function(event){
event.preventDefault();
$('.loaded_content').load($(this).attr('href'));
});
请确保此代码被包装在$(document).ready();
中,或者将其放在html的底部,否则单击事件将无法附加到链接,因为它们需要首先处理。
尝试preventdefault()
$('a').click(function(e){
e.preventDefault ();
$('.loaded_content').load($(this).attr('href'));
return false;
});
$(document).on('click', 'a', function(e){
e.preventDefault();
$('.loaded_content').load($(this).attr('href'));
});
http://api.jquery.com/load/
更改到此的链接
<a href='javasctipy:;' data-link='portfolio/index.html'>portfolio</a>
然后
$('a').click(function(){
document.getElementById("loaded_content").innerHTML='<object type="text/html" data="'+$(this).attr('data-link')+'" ></object>';
});
通过web服务器打开文件,例如
http://localhost/someFile.html
默认情况下,Chrome不允许AJAX请求"file:///"URL。使用路径http://localhost/
将jQuery库添加到文档中。基于小提琴,你已经错过了。