覆盖<a href=""> when using jquery .load to get content</a>

时间:2012-05-04 13:55:11

标签: jquery jquery-load progressive-enhancement

我有几页,所有页面都有不同的内容,页面都使用相对路径标记在导航中链接。从可用性的角度来看,我想做的是使用jquery .load从其他页面获取内容并将其加载到主索引页面中。所以它不必改变页面。

我想做的是显示:

<a id="show-services" href="our_services.html">OUR SERVICES</a>

对于关闭js的SEO /用户,但实际上,使用(下面)加载内容以实现可用性/用户界面

google.load("jquery", "1.6.2");

google.setOnLoadCallback(function() {
$("#show-services").click(function(){
    $(".content").load("our_service.html .content");
    return false;
    });
});

即使HTML标记显示,.load也会覆盖HTML标记(这样蜘蛛仍会看到网站的结构。

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是e.stopPropagation或e.preventDefault。这将阻止事件冒泡,即单击锚点的操作,因为您正在使用js应用事件。如果用户没有启用js,则代码将不会运行,因此操作将回退到锚定默认行为。

$("#show-services").click(function(e){
    e.preventDefault;
    $(".content").load("our_service.html .content");
    return false;
    });
});

答案 1 :(得分:1)

如果您的页面上有多个以这种方式工作的链接,我建议给它们一个特定的类名,以便您可以集体定位它们:

$("nav").on("click", ".asyncLoad", function(event){
  event.preventDefault();
  $(".content").load( event.target.href + ' .content' );
});

这假设链接都在<nav>元素内:

<nav>
  <ul>
    <li><a class="asyncLoad" href="home.html">Home</a></li>
    <li><a class="asyncLoad" href="our_services.html">Our Services</a></li>
    <li><a class="asyncLoad" href="contact_us.html">Contact us</a></li>
  </ul>
</nav>