“a[href*=#]:not([href=#])”代码是什么意思?

问题描述 投票:0回答:6

我不太明白这段代码的含义?

a[href*=#]:not([href=#])

谢谢你!

html css css-selectors
6个回答
47
投票

简单地说:

a[href*=#] 

获取 href 中

包含
a的所有锚点 (
#
)。

但是:

:not([href=#])

排除 href 完全等于

#
的锚点。

示例:

<a href="#step1">yes</a>
<a href="page.php#step2">yes</a>
<a href="#">no</a> 

选择器获取前两个锚点,但排除最后一个。

有关更多详细信息,您可以查阅属性选择器章节


43
投票

以防万一有人遇到和我一样的问题以及新版本的 jQuery : 解决方案不是使用

a[href*=#]:not([href=#])
而是使用

使用

a[href*="#"]:not([href="#"])

这是 jQuery 2.2.4 及以后版本中的一项重大更改。


2
投票

表示所有带有href属性且包含

'#'
的元素,
except
那些href属性等于
#

的元素

1
投票

这是一个CSS3选择器,它获取所有

a
属性
包含
一个href
#
,但不仅仅是由单个
#
字符组成。

例如

匹配

<a href="#home">Home</a>
<a href="index.html#contact">Contact</a>

不匹配

<a href="#">Top</a>

0
投票

它是一个 CSS 选择器,匹配任何具有包含

a
字符的
href
属性的
#
元素,但不匹配仅包含
#
的锚标记。

例如,它将匹配:

<a href="#test">Test Anchor</a>
,但不匹配
<a href="#">Blank</a>


0
投票

这篇文章很古老,但以防万一有人还在看。这只抢:

<a href="#step1">yes</a>
<a href="page.php#step2">yes</a>

或者它也会抓取:

<a href="/path/to/page.php#step2">yes</a>

在测试中,它看起来只是第一组,我需要它来抓住第一组和第二组。

© www.soinside.com 2019 - 2024. All rights reserved.