JQuery没有识别动态生成的id

时间:2015-10-29 18:21:48

标签: javascript jquery html

我已经搜索了一段时间,但我无法找到解决此问题的方法。

我正在使用JSP和Servlet。我运行一个JSP,其中一些代码是动态生成的。

当我启动程序时,我可以正确地看到所有内容。事实上,我已经打开了网页的源代码,一切似乎都是正确的。

在该代码中,它显示<td>标记,其ID为PAR1.1:ED

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

(我已经故意添加了。在代码中没有意义:P)

然后我有一个脚本,我尝试搜索该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?

非常感谢!

2 个答案:

答案 0 :(得分:3)

问题在于结肠和时期;你需要escape them in your selector

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

这也是JSF中的常见问题,其中许多生成的id都有冒号。虽然不禁止使用冒号作为id,但它与CSS选择器中伪类的含义冲突。

答案 1 :(得分:0)

试试这个:

问题是,如果您正在使用&#39;#&#39;来查找ID,则jquery选择器会发生冲突。有字符(如句号)。如果你要使用部分选择器,那就没关系。

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

http://jsfiddle.net/yy21h9s1/