Как выбрать серверный элемент управления ASP.NET, передавая идентификатор, сохраненный в переменной JS в jQuery? - PullRequest
0 голосов
/ 08 апреля 2011

Должно быть просто, но мой разум устал.Как получить этот jQuery для выбора серверного серверного элемента управления ASP.NET с идентификатором, подобным lblName .Идентификаторы разные и входят через переменную id .

var id = 'Name';    //an example
var $element = $("#<%= 'lbl'+ id.ClientID %>");

Ответы [ 2 ]

5 голосов
/ 08 апреля 2011

Вместо использования тегов "<% =" я бы предложил использовать частичные селекторы в jquery.Таким образом, ваш селектор будет выглядеть следующим образом </p>

var $elements = $("[id*=lbl]");  //This selector if you want to get all controls that have "lbl" in the id
var $element2 = $("[id$=lblName]"); // This selector if you know the id specified and want that specific control.  It will return all matches that end with "lblName"

$= is "EndsWith"
^= is "StartsWith"
*= is "Contains"

Это позволит вам выбрать свои элементы управления и иметь возможность перемещать эти селекторы во внешний файл js вместо того, чтобы находиться на той же странице, что и элемент управления.

EDIT: Селектор переключен на «Contains».Причина этого заключается в том, что если вы не используете .net 4.0 или не отключили автоматически сгенерированные идентификаторы, ваши отрендеренные идентификаторы будут выглядеть примерно так: «cto001 $ Somethingsomething $ {указанный здесь ID}» (без {}).Таким образом, вы не можете использовать селектор «Startswith», поскольку он пытается сопоставить динамическую часть идентификатора.

Вы не сможете закончить, так как последняя часть вашего идентификатора также динамична.Таким образом, у нас остается селектор «Contains», который будет соответствовать любому элементу управления, содержащему «lbl».Вы можете сделать первую часть Id (не динамическую часть) менее общей, чтобы не возвращать несвязанные элементы управления.

EDIT2: если вы используете .net 4.0, вы можете отключить автоматически сгенерированный Id, а затемМожно использовать более приятный селектор «StartsWith» (^ =), поскольку отображаемый идентификатор вывода будет таким же, как вы указали.Вы можете сделать это, установив ClientIDMode в «Предсказуемый»

0 голосов
/ 08 апреля 2011

Если это операция с привязкой к данным, вам, возможно, придется использовать кодовый блок #:

var id = 'Name'; //an example

var $element = $("#<%# 'lbl'+ id.ClientID %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...