当使用特殊字符查找$("#search@")
下面的元素时,将发生异常。怎么解决?
我尝试过使用所有特殊字符,但它使用*
字符$("#search*")
没有任何错误,但其他人#$%^&()
会抛出错误。所以它接受了*字符,但为什么其他字符没有。
答案 0 :(得分:2)
如果id
有特殊字符,则在访问它们时应使用\\
(两个反斜杠)将它们转义。但据我所知,只有html5
才允许这样做。
如jquery
selector documentation
使用任何元字符(例如 !“#$%&'()* +,。/:;< =>?@ [] ^`{|}〜)作为名称的字面部分,必须 用两个反斜杠逃脱:\。例如,一个元素 id =“foo.bar”,可以使用选择器$(“#foo \ .bar”)。
alert($("#search\\$").html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="search$">Heh</div>
答案 1 :(得分:0)
尝试使用Attribute Equals Selector [name="value"]
$("[id='search@']").click(function() {
$(this).html(this.id)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="search@">click</div>
&#13;
答案 2 :(得分:0)
不允许使用许多特殊字符(Which characters are valid in CSS class names/selectors?)。
一种仍然选择你想要的东西的方法,通过查找除了特殊字符以外的所有字符,可以看到标记id
中某些内容的开头,结尾或包含的内容。
$('[id^="start-with"]')
结束于:jQuery Selector: Id Ends With?
$('[id$="ending-part"]')
$('[id*="any-spot-at-all"]')
当然还有其他方法可以“给猫皮肤” - 例如,只查找id
或class
的一部分或任何其他HTML标记属性的其他选择器选项在http://api.jquery.com/category/selectors/attribute-selectors/。