【问题标题】:jQuery - how to select only links to new pages?jQuery - 如何只选择新页面的链接?
【发布时间】:2013-08-08 18:29:22
【问题描述】:

我有一些这样的代码,使用 jQuery,当用户单击链接时淡出主 div:

$('a').click( function () { $('#content').fadeOut(); });

但是,我真的只希望这适用于在同一窗口中打开新页面的链接,即不是任何带有 target="_blank" 或任何打开灯箱或模式对话框或跳到文档中的锚点的东西,因为当窗口保持打开但没有内容时,这显然不会很有帮助。

那么,如何将“a”替换为只选择正确类型的链接 - 将当前窗口导航到其他内容(可能是内部或外部)的链接?

非常感谢。 戴夫

【问题讨论】:

  • 打开对话框或灯箱的链接是什么样的?你能举一些例子吗
  • 在你的锚标签上使用不同的ids 或classes 来区分链接,并适当地更新你的jQuery选择器。

标签: jquery hyperlink fadeout


【解决方案1】:

您可以为这些链接分配一个类并更改事件处理程序:

$('.myClass').click( function () { $('#content').fadeOut(); });

显然,如果您已经知道要消失的链接,这可能适用

【讨论】:

  • 有没有办法自动做到这一点?即对所有适用的链接执行 addClass('.myClass') 吗?谢谢。
【解决方案2】:

您应该能够过滤属性:

$('a[target!="_blank"]').click( function () { $('#content').fadeOut(); });

更多关于属性选择器here

抱歉,当 _blank 时才意识到你想要它。相应地编辑

【讨论】:

  • 谢谢,这是一个好的开始,但不幸的是,这并不排除指向页面锚或灯箱/模式对话框的链接,所以我仍然有这个问题。我可以以与您在这里所做的类似的方式列出所有这些:href!="#"、href!="javascript:void(0)" 等等,但对于防水解决方案,我'宁愿以某种方式只选择在同一窗口中打开的链接,而不是详尽地排除那些没有打开的链接。不幸的是,a[target="_self"] 不起作用。
  • 如果您的逻辑太复杂而无法执行此操作,您需要使用以下其他两种解决方案之一,然后我会建议。
猜你喜欢
  • 2017-09-13
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多