6
4

10 回答 10

9

您能否引用页面上的片段,该片段可以作为未执行 JavaScript 操作的逻辑回退?<a href="#account">如果是这样,那么引用并id="account"在页面上放置一个可以作为后备的非常有意义。

另一种选择是直接引用动态加载的内容;这样你就可以很方便地href在 Ajax 调用中使用,而不是以某种方式在 JavaScript 中对请求的内容进行硬编码;<a href="/path/to/dynamic/content">.

最后,您根本不能<a href="#">在 HTML 中静态地使用它,而是使用 jQuery 动态创建它,因为它仅由 jQuery 使用。如果占位符仅由 JavaScript 使用并用于 JavaScript,则无需使用 JavaScript 的占位符污染标记。

关于“将用户发送到页面顶部”;你应该只是return false从你作为click()处理程序连接的函数中;

$('a').click(function() {
    // Do your stuff.
    // The below line prevents the 'href' on the anchor to be followed.
    return false;
});
于 2010-11-19T12:29:09.183 回答
5

您确实应该将<button>元素用于仅 JS 的操作。它们有一个默认操作(如果在表单内),但在表单之外,它们纯粹是针对您将 JS 事件处理程序绑定到的用户触发操作。

于 2010-11-19T12:39:57.817 回答
3

我使用下面的代码,效果很好。

<div class="panel-heading">Definition
          <div class="pull-right">
              <i class="fa fa-wrench"></i> 
                 <a id="step3Ad" href="javascript:void(0);">Advanced</a>
          </div>
    </div
于 2017-08-24T14:19:51.157 回答
2

您是否尝试过省略 href 参数?

<a>Link title</a>

这应该可以正常工作,并且不会引起浏览器加载网页或更改页面位置。事实上,除非你有一些 JavaScript 来支持它,否则它不会做任何事情。

href 参数是可选的,所以如果您不使用它,为什么还要包含它呢?

于 2013-07-16T00:53:01.220 回答
2

如果您有不是链接的链接,也许它们不应该是链接?:-) 您可能会考虑不具有默认行为(在表单之外)的不同 UI 元素,例如button(您可以在很大程度上设置按钮样式)。或者您可以使用span或类似的,但如果您确实设置了适当的可访问性信息(例如 ARIA role="link"),这样您就不会弄乱屏幕阅读器(和浏览器选项卡)。

但如果你想继续使用<a href="#">...</a>,只需给它们附加一个调用event.preventDefault();或返回的处理程序false

于 2010-11-19T12:34:54.313 回答
1

#很好。但是触发的回调应该然后return false

   // assigning a click callback to all anchors
   $('a').click(function(evt){
       //... do stuff
       return false; // avoid jump to '#'
   })
于 2010-11-19T12:28:34.700 回答
1

我更喜欢使用:

<a href="javascript:">foo</a>

除非它实际上是一个 ajax 调用来加载部分模板,在这种情况下我使用这样的东西:

<a href="/link/to/page" onClick="ajax_request_to_partial(); return false;">foo</a>

通过在 onclick 事件中返回 false,您可以确保站点没有重新加载,但它仍然可以用于在新页面中打开 url。

于 2010-11-19T12:28:45.583 回答
1

如果锚对没有 javascript 的人没用,那么他们根本不应该看到它。

最好的选择是在页面加载时使用 jQuery 生成这些链接——这样只有那些会使用它们的人才能看到它们。

在这种情况下,拥有href="#"很好,因为只要您的事件处理程序完成,return false;那么href将永远不会被遵循

于 2010-11-19T12:35:05.620 回答
0
return false;

使用它来阻止浏览器将它们发送到页面顶部?

于 2010-11-19T12:28:29.130 回答
0

如果您在单击时绑定一些操作,您可以调用 preventDefault() 以避免在页面顶部发送用户

$("a.clickable").live('click',function(){$(this).doSome(); $(this).preventDefault()});
于 2010-11-19T12:29:18.727 回答