在Javascript(jquery)中,有没有办法检测页面锚点何时发生变化?

时间:2012-09-06 16:15:16

标签: javascript jquery

基本上,我希望在整个页面中都有链接来更改锚点 - 在#符号后面的URL部分。当URL的那一部分发生变化时,JavaScript应该响应。

我可以为每个链接添加一个onclick方法,但是有更好的方法吗?

7 个答案:

答案 0 :(得分:4)

$(window).bind('hashchange', function() {
  // code here
});

认为应该这样做

答案 1 :(得分:3)

那不是锚,它是哈希?

$(window).on('hashchange', function() {
    alert('My fracking hash changed to : '+document.location.hash);
});

答案 2 :(得分:1)

在jQuery中,您不需要将onclick事件添加到所有个人链接。使用$('a')之类的选择器,您可以一次向所有链接添加事件。

$('a').click(function(){
    // code here
});

在此活动中,您可以使用$(this)对象获取href

但我建议其他答案向您展示解决此问题的更优雅方式。

答案 3 :(得分:0)

首先,你必须选择元素。

例如var links = $(“a”);

然后添加jquery函数.click()

答案 4 :(得分:0)

您可以向a添加delegate

$(elements).on(events,selector,data,handler);

不同之处在于它不会向每个onClick元素添加“a”,但它会捕获onClick的“a”事件

答案 5 :(得分:0)

试试这个

  1. window.location.hash存储在全局变量上,例如currentHash
  2. 创建一个检查window.location.hash !== currentHash
  3. 的函数
  4. 如果检查失败,请设置currentHash = window.location.hash
  5. 使用setInterval
  6. 上的DOMReady执行此功能

答案 6 :(得分:0)

Sammy.js是你的朋友。我已经在我正在使用的SPA上使用它,我喜欢它!