Jquery 选择器不工作:错误:语法错误,无法识别的表达式:a[@href]
<body>
<div>
<p>This is <strong>first</strong> paragraph</p>
<p>And this one is second</p>
<span><h2>I am p inside span</h2></span>
<h1>I am h1</h1>
</div>
<div name="divName">
<p><a href="www.google.pl">This is a paragraph in second div</a></p>
</div>
</body>
以下代码显示:
Error: Syntax error, unrecognized expression: a[@href]
//Another file
$(document).ready(function() {
$("div[p]").css("background-color", "green");
$("a[@href]").css("background-color", "yellow");
});
另外,
$("div[p]").css("background-color", "green");
似乎什么也没做。
这是怎么回事?
根据
http://www.tutorialspoint.com/jquery/jquery-selectors.htm
,这些应该是有效的。
目前尚不清楚“tutorialspoint”使用的是哪个版本的 jquery,但是,假设您指的是第 17 个版本:
$("div[p]")
Selects all elements matched by that contain an element matched by
<p>
这要么是完全错误的,要么是非常过时的(编辑:看起来它已经过时了 10 年左右……请参阅下面的编辑)。
SO 上也有很多问题询问如何实现这一点,但没有一个给出这个答案。
您应该参考的页面是:
https://api.jquery.com/category/selectors/
这表明
[]
用于匹配属性,例如:
<p data-id='123'>
$("p[data-id]")
将匹配所有具有属性的
p
data-id
(无论在这种情况下值是什么)。
编辑 :要解决标题“无法识别的表达式 a[@href]”中的具体问题 - 请参阅此问题: jQuery 选择器中的“@”符号是什么意思? 答案指出,这是 在 2010 年 “2 个版本之前”已过时
所以我猜你的教程页面大约 过时了 10 年
<div>
<p>This is <strong>first</strong> paragraph</p>
<p>And this one is second</p>
<span><h2>I am p inside span</h2></span>
<h1>I am h1</h1>
</div>
<div name="divName">
<p><a href="www.google.pl">This is a paragraph in second div</a></p>
</div>
JS
//Another file
$(document).ready(function() {
$("div p").css("background-color", "green");
$("a[href]").css("background-color", "yellow");
});