不确定这个Javascript代码的作用

时间:2015-09-23 19:02:15

标签: javascript jquery html css

所以,我正在阅读一个JS文件,其中包含以下代码:

$('a[href]:not(.no-ajaxy):not([target="_blank"]):not([href^="#"]):not([href^="mailto:"]):not(.comment-edit-link):not(.comments-link):not(#cancel-comment-reply-link):not(.comment-reply-link):not(#toggle-nav):not(.logged-in-as a):not(.add_to_cart_button):not(.section-down-arrow):not([data-filter]):not(.pp):not([rel^="prettyPhoto"]):not(.pretty_photo)').click(function(e){

提高可读性

$('a[href]:not(.no-ajaxy)
:not([target="_blank"])
:not([href^="#"])
:not([href^="mailto:"])
:not(.comment-edit-link)
:not(.comments-link)
:not(#cancel-comment-reply-link)
:not(.comment-reply-link)
:not(#toggle-nav)
:not(.logged-in-as a)
:not(.add_to_cart_button)
:not(.section-down-arrow)
:not([data-filter])
:not(.pp)
:not([rel^="prettyPhoto"])
:not(.pretty_photo)')
.click(function(e){

所以,我认为它是一个钩子,它被附加到点击它时触发的所有<a href=...>个链接,但它被排除在某些链接之外案例。但是,我似乎无法理解以下情况:

  • .no-ajaxy是一个可以应用于<a class="no-ajaxy">的类,还是可以应用于父元素的类?对于以.

  • 开头的所有其他非过滤器,情况也是如此
  • rel^="prettyPhoto"我认为这意味着,如果链接如下<a href="..." rel="prettyPhoto">,则不会与此匹配,因为它不是这样,对吗?

我已经尝试过一些与这些排除相匹配的案例,但似乎有些事情让它忽略了这些条件。

1 个答案:

答案 0 :(得分:3)

首先,所有关于jQuery selectors

代码,由选择器解释选择器:

  • a[href]具有<a>属性的所有href元素,并且:
  • :not(.no-ajaxy)没有CSS类no-ajaxy
  • :not([target="_blank"])没有target属性值_blank
  • :not([href^="#"])没有以href
  • 开头的'#'属性
  • :not([href^="mailto:"])没有以href
  • 开头的'mailto:'属性
  • :not(.comment-edit-link)没有CSS类comment-edit-link
  • :not(.comments-link)没有CSS类comments-link
  • :not(#cancel-comment-reply-link)没有ID cancel-comment-reply-link
  • :not(.comment-reply-link)没有CSS类comment-reply-link
  • :not(#toggle-nav)没有ID toggle-nav
  • :not(.logged-in-as a)没有包含CSS类logged-in-as
  • 的父节点
  • :not(.add_to_cart_button)没有CSS类add_to_cart_button
  • :not(.section-down-arrow)没有CSS类section-down-arrow
  • :not([data-filter])没有属性data-filter
  • :not(.pp)没有CSS类pp
  • :not([rel^="prettyPhoto"])没有以rel
  • 开头的属性'prettyPhoto'
  • :not(.pretty_photo)'没有CSS类pretty_photo

因此,它获取具有上述条件的所有锚标记,并为它们注册click事件处理程序。