在不同的TD中访问控件的ClientID

时间:2011-04-25 14:37:46

标签: jquery asp.net clientid

我试图在另一个控件中使用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中的对象,但在这里它似乎无法找到控件。

2 个答案:

答案 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">
相关问题