jQuery : 不是选择器和哈希符号语法错误

jQuery :not selector and hash symbol syntax error

我遇到了一个可爱的语法错误。这是当我尝试 select 所有不带包含占位符 URL 的 href 的锚标签时,即 href="#".

我试过以下方法:

$("a:not(href='#')");

//swapped single with double quotes
$('a:not(href="#")');

// no quotes at all
$("a:not(href=#)");

// wildcard selector
$("a:not(href*=#)");

所有这些都会导致以下错误:

Uncaught Error: Syntax error, unrecognized expression: href=#(…)

有什么想法吗?


下面的片段:

var $item = $("a:not(href='#')");
console.log($item);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="http://google.com">Selected</a>
<a href="#">Not selected</a>

href 的测试需要在方括号中:

$("a:not([href='#'])")

括号在那里是因为这就是您在 CSS 选择器中进行属性值测试的方式。例如,如果您只是在寻找具有 href 的元素,它看起来像

$("[href='#']")