包含冒号的属性选择器未找到任何元素

时间:2014-12-15 10:47:55

标签: jquery html dom

我有以下HTML标签,并希望通过jQuery选择它们:

<div foo:bar="test"></div>
<span foo:bar="test2"></span>
<xxx foo:bar="test3"></xxx>

所以,我想选择所有具有foo:bar属性的标签。

我试过以下:

$('[foo:bar]').addClass("fooBar");
// Error: Syntax error, unrecognized expression: [adv:sensorid]

我知道,正确的语法会像&#34; data-foo-bar&#34;,但我必须使用&#34; foo:bar&#34;。

这在jQuery中甚至可能吗?

如果它有所帮助,我甚至可以使用AngularJS。非常感谢你!

2 个答案:

答案 0 :(得分:9)

这是可能的。您需要使用\\

转义任何特殊字符
$('[foo\\:bar]').addClass("fooBar");

DOC:

  

使用任何元字符(例如   !“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为名称的字面部分,必须   用两个反斜杠逃脱:\\。例如,一个元素   id =“foo.bar”,可以使用选择器$(“#foo \\。bar”)。

答案 1 :(得分:-1)

例如我们有HTML:

<span id="item-1023293" pr:position="hr">Jhon</span>

我们需要按属性选择所有span元素。

所以选择器应该是这样的:

document.querySelectorAll('span[pr\\:position="hr"]')