2

我正在尝试从另一个控件中的 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 中,但在这里它似乎无法找到控件。

4

2 回答 2

0

如果您直接引用服务器端的控件,ClientID则应包括任何 NamingContainer 信息(来自 GridView 或 Repeater 之类的东西)。找出控件的客户端 ID 使用浏览器的开发工具(IE 有开发工具、Firefox 的 Firebug 等),然后调试 JavaScript(使用相同的工具)并$("#theidyoujustfound")在 JavaScript 控制台中执行一次,看看你结束了什么跟上。

您的方法中似乎还缺少双引号DoStuff();你会想要$("#<%= blah.ClientID %>").hide();的。而且我不确定它是否有必要,但包含 OnClientClient 函数的括号不会有什么坏处:

<asp:LinkButton OnClientClick="DoStuff()" runat="server">
于 2011-04-25T14:52:11.310 回答
0

要验证它找不到它,试试这个:alert($("#<%= blah.ClientID %>).length); 如果它返回一个大于零的数字,那么问题不在于找到。控件中的表格行是否与控件一样<asp:Repeater />?如果是这样,那么您也需要将脚本嵌入转发器模板中。

HTH。

于 2011-04-25T14:43:24.723 回答