按下链接时,将href加载到div中



我知道以前有人问过这个问题,我试着按照建议做,但我似乎无法让它发挥作用。

基本上我有这样的链接:

<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库添加到文档中。基于小提琴,你已经错过了。

最新更新