我不太明白这段代码的含义?
a[href*=#]:not([href=#])
谢谢你!
简单地说:
a[href*=#]
获取 href 中
包含
a
的所有锚点 (#
)。
但是:
:not([href=#])
排除 href 完全等于 到
#
的锚点。
示例:
<a href="#step1">yes</a>
<a href="page.php#step2">yes</a>
<a href="#">no</a>
选择器获取前两个锚点,但排除最后一个。
有关更多详细信息,您可以查阅属性选择器章节
以防万一有人遇到和我一样的问题以及新版本的 jQuery : 解决方案不是使用
a[href*=#]:not([href=#])
而是使用
a[href*="#"]:not([href="#"])
这是 jQuery 2.2.4 及以后版本中的一项重大更改。
表示所有带有href属性且包含
'#'
的元素,except
那些href属性等于#
的元素
这是一个CSS3选择器,它获取所有
a
属性包含一个
href
的#
,但不仅仅是由单个#
字符组成。
例如
匹配
<a href="#home">Home</a>
<a href="index.html#contact">Contact</a>
不匹配
<a href="#">Top</a>
它是一个 CSS 选择器,匹配任何具有包含
a
字符的 href
属性的 #
元素,但不匹配仅包含 #
的锚标记。
例如,它将匹配:
<a href="#test">Test Anchor</a>
,但不匹配<a href="#">Blank</a>
这篇文章很古老,但以防万一有人还在看。这只抢:
<a href="#step1">yes</a>
<a href="page.php#step2">yes</a>
或者它也会抓取:
<a href="/path/to/page.php#step2">yes</a>
在测试中,它看起来只是第一组,我需要它来抓住第一组和第二组。