我试图在另一个控件中使用javascript(使用jquery)调用访问一个控件的ClientID,以便进行一些客户端显示和隐藏效果。这是基本结构:
<td>
<asp:LinkButton OnClientClick="DoStuff" runat="server">
</td>
<td>
<asp:TextBox ID="blah" runat="server">
</td>
在脚本中:
function DoStuff() {
$("#<%= blah.ClientID %>").hide();
}
我遇到的问题是,该功能什么都不做。它可以很好地隐藏同一个TD中的对象,但在这里它似乎无法找到控件。
答案 0 :(得分:0)
要验证它找不到它,请尝试以下操作:alert($("#<%= blah.ClientID %>).length);
如果它返回的数字大于零,则问题不在于查找。控件中的表行是否像<asp:Repeater />
控件一样?如果是这样,那么您还需要将脚本嵌入到转发器模板中。
HTH。
答案 1 :(得分:0)
如果您直接引用服务器端的控件,ClientID
应该包含任何NamingContainer信息(来自GridView或Repeater之类的信息)。找出控件的客户端ID使用浏览器的开发人员工具(IE有Developer Tools,Firebug for Firefox等),然后调试JavaScript(使用相同的工具)并在JavaScript控制台中执行$("#theidyoujustfound")
并看看你最终得到了什么。
您的DoStuff()
方法看起来似乎缺少双引号;你需要$("#<%= blah.ClientID %>").hide();
。而且我不确定它是否有必要,但是包含OnClientClient函数的括号并没有什么坏处:
<asp:LinkButton OnClientClick="DoStuff()" runat="server">