3

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

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

4

7 回答 7

4

那不是锚,是哈希?

$(window).on('hashchange', function() {
    alert('My fracking hash changed to : '+document.location.hash);
});
于 2012-09-06T16:18:22.853 回答
4
$(window).bind('hashchange', function() {
  // code here
});

认为应该这样做

于 2012-09-06T16:19:14.003 回答
1

在 jQuery 中,您不需要将 onclick 事件添加到所有单独的链接。使用像这样的选择器,$('a')您可以一次将事件添加到所有链接。

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

在此事件中,您可以使用该$(this)对象来获取href.

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

于 2012-09-06T16:18:04.063 回答
0

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

于 2012-09-06T16:23:07.863 回答
0

首先,您必须选择元素。

例如 var links = $("a");

然后添加 jquery 函数 .click()

于 2012-09-06T16:20:56.693 回答
0

您可以将委托添加到a,

$(元素).on(事件、选择器、数据、处理程序);

不同的是它不会onClick在每个a元素中添加“”,但它会捕获“ onClick”事件a

于 2012-09-06T16:20:56.570 回答
0

尝试这个

  1. 存储window.location.hash在一个全局变量上,比如说,currentHash
  2. 创建一个函数来检查window.location.hash !== currentHash
  3. 如果检查失败设置currentHash = window.location.hash
  4. setInterval使用on执行此功能DOMReady
于 2012-09-06T16:21:17.183 回答