4

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

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

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

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

上面给出了错误。有什么解决办法??

4

3 回答 3

3

代替

$("#:0.control")

尝试

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

演示

或者

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

演示

于 2012-06-14T07:44:54.220 回答
3

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

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

这是一个工作示例

请注意,除非您使用 HTML5 文档类型,否则您的 ID 无效。另请注意,转义特殊字符比在另一个答案中使用属性选择器要快得多:

在此处输入图像描述

这样做的原因是浏览器可以利用速度getElementById,而不是不得不依赖querySelector或 Sizzle。

于 2012-06-14T07:45:42.110 回答
1

这很丑陋,但它有效:

$(document.getElementById(":0.control"))

在某些情况下,whenid存储在变量中,您必须使用:

var id = ":0.control";
$(document.getElementById(id))

否则,当您想使用 pure 时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 
});
于 2012-06-14T07:45:48.553 回答