何时锚标记只触发jQuery操作而不重定向用户?" >

替代何时锚标记只触发jQuery操作而不重定向用户?

我的页面上有很多锚标记只能在同一页面上触发jQuery操作。

不要将用户重定向到另一个位置,这是锚标记的正常预期行为。

我不想在我的应用程序中为每个操作都有安静的URL。 但是,我也不喜欢每次点击其中一个标签时将用户发送到页面顶部。

除了#之外,置于锚标记的href值内有什么更好的价值?

您是否可以在页面上引用一个片段,该片段可以作为未执行的JavaScript操作的逻辑后备? 如果是这样,引用并在页面上有一个id="account"可以作为后备使用是很有意义的。

另一种选择是直接引用动态加载的内容; 这样你就可以非常方便地在Ajax调用中使用href ,而不是以某种方式硬编码JavaScript中的请求;

最后,你根本不能在HTML中静态地使用 ,而是使用jQuery动态创建它,因为它只是由jQuery使用。 如果占位符仅用于JavaScript并且仍然用于JavaScript,则无需使用JavaScript的占位符污染标记。

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

 $('a').click(function() { // Do your stuff. // The below line prevents the 'href' on the anchor to be followed. return false; }); 

您应该使用元素进行仅限JS的操作。 它们具有默认操作(如果在表单内)但在表单之外,它们纯粹是用于将JS事件处理程序绑定到的用户触发操作。

如果您的链接不是链接,也许它们不应该是链接? :-)您可能会考虑一个不具有默认行为(在表单之外)的不同UI元素,例如button (您可以在很大程度上设置按钮样式)。 或者你可以使用span或类似的东西,但如果你确实设置了相应的辅助function信息(例如ARIA role="link" ),那么你就不会搞砸屏幕阅读器(和浏览器标签)。

但是,如果您想继续使用... ,只需将一个处理程序附加到调用event.preventDefault();的处理程序event.preventDefault(); 或返回false

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

  // assigning a click callback to all anchors $('a').click(function(evt){ //... do stuff return false; // avoid jump to '#' }) 

我更喜欢使用:

 foo 

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

 foo 

通过在onclick事件中返回false,您可以确保该站点未重新加载,但仍可用于在新页面中打开该URL。

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

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

在这种情况下,拥有href="#"就可以了,因为只要你的事件处理程序完成return false; 然后永远不会遵循href

你试过省略href参数吗?

 Link title 

这应该工作得很好,不会激怒浏览器加载网页或更改页面位置。 事实上,除非你有一些JavaScript支持它,否则它不会做任何事情。

href参数是可选的,那么为什么要包括它,如果你不使用它?

我使用下面的代码,工作正常。

 
Definition
 return false; 

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

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

 $("a.clickable").live('click',function(){$(this).doSome(); $(this).preventDefault()});