最近在做项目的时候遇到了一个问题,就是在项目中我使用了母版页的结构,所以在获取前台ID的中会遇到服务器控件ID自动添加母版页ID前缀的问题。
记得刚开始做web开发的时候,使用Repeater控件也遇到过子控件ID自动加前缀的问题,那时候的解决办法就是将项目运行一下,在浏览器中查看源代码,然后复制运行后生成的最终ID,粘贴到自己的代码中去,但是现在再用这种方法总觉得不妥,看起来太业余。
说这个有点扯跑题了,下面是正题:
由于用了母版页,所以我写jQuery的时候取控件ID就要这样写
1
|
jQuery(
"#<%= btnAdd.ClientID%>"
).click();
|
这样写法的好处是服务器按钮控件btnAdd会直接通过ClientID这个属性获得其加完前缀的最终ID。
而这段代码在运行之后,我们可以看到最终生成的内容是这样的
1
|
jQuery(
"#ContentPlaceHolder1_btnAdd"
).click();
|
可以看出自动在原ID的基础上加了ContentPlaceHolder1_这个前缀。
但是问题也随之而来了,在当我把jQuery 的代码从前台.aspx页的<head>中独立到一个单独的.js文件之后,发现一切就变得失效了。查看源代码,如下