【问题标题】:jQuery is canceling the default event operation for a hyperlinkjQuery 正在取消超链接的默认事件操作
【发布时间】:2011-07-08 12:51:51
【问题描述】:

我已经使用 jQuery 为锚元素分配了一个 .click() 处理程序,以创建动画效果。该链接更改哈希,然后由 AJAX 系统处理。问题是,当我分配 .click() 事件函数时,哈希不再自动更改。我可以使用 document.location.hash = "hash" 手动更改它,但 Firefox 似乎并不喜欢它。当我从我的历史记录中加载页面时,它可以工作,但表现得很奇怪。

有没有人遇到过这样的问题?

<a href="#test">Test</a>

$('a[href="#test"]').click(function(){
 $(this).doSomething();
});

【问题讨论】:

  • doSomething() 是否抛出错误?此外,您可以只使用单引号,而不是在选择器中转义双引号。
  • $(this).doSomething();你怎么会这样调用函数??
  • ...另外,您缺少一个右括号和一个分号。这也是你真实代码中的错误吗?
  • 如果a 有任何祖先绑定了click 处理程序,请确保它们没有return false; 或调用event.preventDefault()。另外,请发布重现问题的实际代码。
  • 演示@patrick 所说的内容:jsfiddle.net/mattball/tCZPG/1

标签: jquery events hash click default


【解决方案1】:

代替你的实际代码试试这样的

<a href="#test" class="sample">Test</a>

$(".sample").click(function()
{
  alert("href clicked"); // do your animation here
  return false;
}

【讨论】:

    【解决方案2】:

    很抱歉再次回答我自己的问题。原来我只是在混淆自己。确实,祖先元素被分配了 click() 事件,而不是锚本身。当我更改事件以反映锚点时,我什么也没得到。然后我意识到锚实际上是 1x1 尺寸。重新 CSS 后,锚点现在是列表元素的适当大小,一切正常。

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多