添加jQuery Click处理程序

时间:2012-06-14 07:43:21

标签: javascript jquery

我在页面中有以下div(我无法修改)。

   <div id=":0.control">Click me</div>

现在我想添加一个jQuery Click处理程序

$("#:0.control").click(function () {
         alert('Clicked');
     }
 );

上面给出错误。任何解决方案??

3 个答案:

答案 0 :(得分:3)

而不是

$("#:0.control")

$('div[id="\\:0\\.control"]')

<强> DEMO

$("#\\:0\\.control") // better that previous one

<强> DEMO

答案 1 :(得分:3)

您可以在选择器中转义特殊字符:

$("#\\:0\\.control").click(function () {
     alert('Clicked');
});​

这是working example

请注意,除非您使用HTML5文档类型,否则您的ID无效。另请注意,转义特殊字符为significantly faster,而不是使用属性选择器,如另一个答案:

enter image description here

原因是浏览器可以利用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 
});