2012-06-14 170 views
4

我在頁面中有下面的div(我無法修改)。添加jQuery點擊處理程序

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

現在我想添加一個jQuery Click處理

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

上面給出錯誤。任何解決方案取而代之的

$("#:0.control") 

+1

你的ID是無效的,但如果你不能改變你必須找到一些其他的方式,DIV標記......您可能需要張貼整個HTML代碼 – fcalderan

+0

奇怪的名字,我不確定這個名字甚至是有效的。嘗試命名它control0可能是 – frenchie

+0

我正在添加一個外部的google widget(一個外部的.js)。此代碼在代碼中。我想鉤住div來執行我自己的任務。 – Manjoor

回答

3

嘗試

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

DEMO

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

DEMO

+0

談談代碼維護!很好的答案,但是對於那些在閱讀他的代碼時會偶然發現的人感到抱歉。 – frenchie

+0

謝謝它的作品 – Manjoor

+0

@ Manjoor不客氣 – thecodeparadox

3

您可以選擇特殊字符轉義:

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

這裏有一個working example

請注意,除非您使用HTML5文檔類型,否則您的ID無效。還要注意的是逃避特殊字符是significantly faster比使用屬性選擇在另一個答案:

enter image description here

這樣做的原因是,瀏覽器可以採取的getElementById速度快的優點,而不是依賴在querySelector或Sizzle。

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 
}); 
相關問題