我在页面中有以下div(我无法修改)。
<div id=":0.control">Click me</div>
现在我想添加一个jQuery Click处理程序
$("#:0.control").click(function () {
alert('Clicked');
}
);
上面给出错误。任何解决方案??
答案 0 :(得分:3)
而不是
$("#:0.control")
试
$('div[id="\\:0\\.control"]')
<强> DEMO 强>
或
$("#\\:0\\.control") // better that previous one
<强> DEMO 强>
答案 1 :(得分:3)
您可以在选择器中转义特殊字符:
$("#\\:0\\.control").click(function () {
alert('Clicked');
});
请注意,除非您使用HTML5文档类型,否则您的ID无效。另请注意,转义特殊字符为significantly faster,而不是使用属性选择器,如另一个答案:
原因是浏览器可以利用getElementById
的速度,而不必依赖querySelector
或Sizzle。
答案 2 :(得分:1)
这很丑陋,但确实有效:
$(document.getElementById(":0.control"))
如果id
存储在变量中,则必须使用:
var id = ":0.control";
$(document.getElementById(id))
否则,当您想要使用纯jQuery
时,需要添加额外的斜杠。
更复杂的例子:
var idArray = [":bla-bla","bla[]","commonId"];
$.each( idArray, function(i,id){
$(document.getElementById(id)) //do some stuff
//Otherwise, when using pure jQuery, we need to add slashes before ':','[',']' characters
});