【发布时间】:2015-09-24 03:25:56
【问题描述】:
所以,我正在读取一个包含以下代码的 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">它不会匹配这个,因为它说不是这个,对吧?
我已经尝试了一些案例来匹配这些排除项,但似乎有什么东西让它忽略了这些条件。
【问题讨论】:
-
简答:选择一组元素并注册一个点击处理程序。这是一个很长的选择器,所以只需从头开始,逐个标记地处理它。
-
PS. 不要假设,而是检查各种选择器上的documentation。
-
no-ajaxy是一个来自ajaxify-html.js插件的类。它基本上说不要在该类的元素上使用ajax。所以我认为它将钩子应用于所有没有类.no-ajaxy的<a>标签 -
我非常感谢这些链接,虽然我刚开始使用 Javascript 并且不知道它是 jQuery 选择器。我觉得没有必要仅仅因为这个问题是一个新手问题就那么讨厌这个问题。
标签: javascript jquery html css