2015-10-29 27 views
1

我已經搜索了一段時間,但我無法找到解決此問題的解決方案。JQuery不會識別動態生成的標識

我正在使用JSP和Servlet。我運行了一個動態生成一些代碼的JSP。

當我啓動程序時,我可以正確地看到一切。事實上,我已經打開了網頁的源代碼,並且一切似乎都是正確的。

在該代碼中,它會出現一個<td>標籤與ID PAR1.1:(我已經添加了這裏的目的有一個在代碼中沒有點:P)ED

<.td id="PAR1.1:ED" >3700.0</td> 

然後我有一個腳本,我嘗試搜索該ID,但它好像不存在。

<script type="text/javascript"> 
     $(document).ready(function() { 
      $(document).on("change", "input", function() { 
       if($("#PAR1.1:ED").length){ 
        alert("exists"); 
       } 
       else{ 
        alert("doesn't exist"); 
       } 
      });   
     }); 
    </script> 

如何檢測標籤ID?

非常感謝!

+0

嘗試刪除'$(文件)。就緒()'..ie保持'$(文件)。在( 「變」, 「輸入」,函數(){ 如果($( 「#PAR1.1:ED」。)長){ 警報( 「存在」);} 其他 { 警報( 「不存在」);} });''的外ready()' – Lal

+0

你會得到一個'alert(「不存在);'popup right?或者你什麼都得不到? – indubitablee

+2

我想你需要在你的id中轉義字符。 TP://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/ ) – ioums

回答

3

問題在於冒號和句號;你需要escape them in your selector

if ($("#PAR1\\.1\\:ED").length){ 
    alert("exists"); 
} 

這是在JSF的通病,也是如此,在那裏大量生成的ID的裏面有一個冒號。雖然不禁止使用冒號作爲id,但它與CSS選擇器中的僞類的含義相沖突。

+0

非常感謝! – mikizas

0

試試這個:

的問題是,如果你使用的是「#」有字符(如週期)尋找一個ID jQuery選擇會衝突。如果您要使用部分選擇器,那就沒問題。

if($("[id^='PAR1.1:ED']").length) 
{ 
        alert("exists"); 
       } 
       else{ 
        alert("doesn't exist"); 
       } 

http://jsfiddle.net/yy21h9s1/