Доступ к ClientID элемента управления в другом TD
Я пытаюсь получить доступ к ClientID элемента управления в одном из вызова javascript (используя jquery) в элементе управления в другом, чтобы выполнить некоторые эффекты показа и скрытия на стороне клиента. Вот основная структура:
<td>
<asp:LinkButton OnClientClick="DoStuff" runat="server">
</td>
<td>
<asp:TextBox ID="blah" runat="server">
</td>
В скриптах:
function DoStuff() {
$("#<%= blah.ClientID %>").hide();
}
Проблема у меня в том, что функция ничего не делает. Он отлично работает, скрывая объекты в одном и том же TD, но здесь, похоже, не удается найти элемент управления.
2 ответа
Если вы имеете в виду непосредственно элемент управления на стороне сервера, ClientID
должен включать любую информацию NamingContainer (из чего-то вроде GridView или Repeater). Узнайте, какой идентификатор клиента элемента управления использует инструменты разработчика вашего браузера (в IE есть Developer Tools, Firebug for Firefox и т. Д.), Затем отладьте JavaScript (с помощью того же инструмента) и выполните $("#theidyoujustfound")
в консоли JavaScript и посмотрите, что вы в итоге.
Похоже, что в вашей DoStuff()
Способ; ты захочешь $("#<%= blah.ClientID %>").hide();
, И я не уверен, что это необходимо, но не мешало бы включить скобки для функции OnClientClient:
<asp:LinkButton OnClientClick="DoStuff()" runat="server">
Чтобы убедиться, что он не может его найти, попробуйте это: alert($("#<%= blah.ClientID %>).length);
Если он возвращает число больше нуля, то проблема не в поиске. Строка таблицы в элементе управления похожа на <asp:Repeater />
контроль? Если это так, то вам также необходимо встроить скрипт в шаблон повторителя.
НТН.