如何正确地哈希我的链接rel attr,以便它在页面刷新时保持不变

时间:2012-07-07 17:11:04

标签: jquery ajax hash hyperlink rel

我真的会在这件事上提供任何帮助。这是我到目前为止的代码:

    $('.Ajax_links').click(function() {
  window.location.hash = $(this).attr("href");
  var href = $(this).attr('href');  
  $('#contaniner_div').load(href);

  $('data-target').click(function() {
  var data-target = $(this).attr('data-target');
  $('#contaniner_Div_Nav').load(this.data-target);
  }

 return false;
});

如果单击设置为(class =“Ajax_links”)类的链接,我希望上面的代码搞砸上面这两个div中的内容:

<div id="contaniner_Div"></div>
<div id="contaniner_Div_Nav"></div>

这是链接的外观:

<a href="files/content.html" class="Ajax_links" data-target="files/navigation.html">

当我点击链接时,我使用rel而不是数据目标方法的第一个方法将内容加载到这两个div中,但该内容的rel部分未包含在哈希中。使我无法为链接的rel部分添加书签,或者如果我想使用浏览器按钮返回/转发。 (我正在使用ben Alman插件)。所以现在我正在寻找一种不同的方法,但我的代码不起作用。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我认为你需要一个后退按钮和历史记录支持的插件。这个通常被认为是非常好的:

http://benalman.com/projects/jquery-bbq-plugin/

答案 1 :(得分:1)

正如David Thomas所指出的那样,您似乎承认,代码中的$(this)是文档对象周围的jQuery包装器。该对象没有rel属性,因此$(this).attr("rel")是值undefined。在JavaScript undefined != ""中,表达式的计算结果为true,然后将window.location.hash设置为另一个未定义的值:$(this).attr("href")。这就是您看到domain/#undefined等网址的原因。

我还应该指出你在HTML锚标记上误用了the rel attribute

  

此属性描述从当前文档到href属性指定的锚点的关系。此属性的值是以空格分隔的链接类型列表。

这是the list of valid link types。使用data- attributes存储有关HTML元素的任意元数据,您将获得更好的服务。