JQuery, работать на элементе управления после нахождения его по идентификатору - PullRequest
2 голосов
/ 19 мая 2011

я нашел необходимый элемент управления с помощью jquery, как показано ниже ...

источник управления:

<a id="ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit" class="lbEdit" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit','')">ویرایش</a>

код запроса:

оповещения ($ ( 'а [идентификатор $ = "lbEdit"]'));


я хочу знать, в чем разница между

ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit

и

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

и как я могу получить

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

с jquery?
значит, мне нужно проверить верхний идентификатор или что-то еще в условии, и я думаю, что жесткий код верхнего идентификатора не правильный путь ...

Ответы [ 4 ]

3 голосов
/ 19 мая 2011

ASP.Net использует эти запутанные шаблоны именования для генерации идентификаторов HTML-элементов, когда они runat="server", что затрудняет использование для поиска элемента управления по идентификатору на странице.

Попробуйте использовать этот селектор с тегами сервера, используя вместо этого элементы управления ClientID:

$('#<%=lbEdit.ClientID %>");
2 голосов
/ 19 мая 2011

Во-первых, ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit - это атрибут HTML Id элемента.

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit - это внутренняя ссылка ASP.Net этого элемента.Он не имеет смысла для внешнего интерфейса сайта.

В вашем примере, чтобы получить текст этого элемента с помощью селектора jQuery, вы должны использовать:Стоит отметить, что использование веб-форм ASP.Net будет означать, что вы не можете полагаться на то, что идентификатор этого элемента всегда один и тот же.Вы должны были бы точно определить этот конкретный элемент через его класс (который вы можете надежно установить в ASP.Net) и его родительские элементы.

2 голосов
/ 19 мая 2011

Используйте .NET 4.0 и установите для CliendIDMode значение Static.

http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

Это сделает ваши идентификаторы намного проще для ссылок из JavaScript.

0 голосов
/ 19 мая 2011

Я думаю, что вы можете сделать это вместо этого.javascript: __ doPostBack ('<% = lbEdit.ClientID%>', '')

...