Какой лучший способ найти элемент управления ASP.Net с помощью jQuery?

При реализации моего первого значимого script с использованием jquery мне нужно было найти определенный веб-элемент управления на странице. Поскольку я работаю с DotNetNuke, не гарантируется контроль ClientID, поскольку управление контейнером может меняться с сайта на сайт. Я закончил использование селектора атрибутов, который ищет идентификатор, который заканчивается идентификатором сервера управления.

$("select[id$='cboPanes']")

Похоже, что это не лучший метод. Есть ли другой способ сделать это?


@Roosteronacid. Пока я получаю элементы управления, которые я хочу, я стараюсь следовать за идиомами для данной технологии/языка. Когда я программирую на С#, я стараюсь сделать это так, чтобы лучше использовать возможности С#. Поскольку это мое первое усилие при использовании jQuery, и поскольку это будет использоваться 10 тысячами пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.

@toohool - это определенно работает, но, к сожалению, мне нужно сохранить javascript в отдельных файлах по соображениям производительности. Вы не можете очень эффективно использовать кеширование, если вы встраиваете javascript, поскольку каждая "страница" динамически генерируется. Я в конечном итоге отправляю один и тот же javascript для клиента снова и снова, только потому, что изменился другой контент на странице.


@Roosteronacid. Пока я получаю элементы управления, которые я хочу, я стараюсь следовать за идиомами для данной технологии/языка. Когда я программирую на С#, я стараюсь сделать это так, чтобы лучше использовать возможности С#. Поскольку это мое первое усилие при использовании jQuery, и поскольку это будет использоваться 10 тысячами пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.

@toohool - это определенно работает, но, к сожалению, мне нужно сохранить javascript в отдельных файлах по соображениям производительности. Вы не можете очень эффективно использовать кеширование, если вы встраиваете javascript, поскольку каждая "страница" динамически генерируется. Я в конечном итоге отправляю один и тот же javascript для клиента снова и снова, только потому, что изменился другой контент на странице.

Ответы

Ответ 1

$("#<%= cboPanes.ClientID %>")

Это будет динамически вводить идентификатор DOM элемента управления. Конечно, это означает, что ваш JS должен находиться в файле ASPX, а не в внешнем JS файле.

Ответ 2

Одна вещь, которую я делал в прошлом (в JavaScript, а не jQuery), в приведенных выше моих импортированных JavaScript, выводит идентификатор динамических элементов управления, аналогичный тому, что рекомендует orhool, и назначает их переменным, которые я ссылаюсь в своем script импорт.

Что-то вроде этого, должно позволить вам использовать кеширование и все же позволить вам иметь точные идентификаторы клиентов:

<head>
    <script type="text/javascript>
        var cboPanesID = <%= cboPanes.ClientID %>;
    </script>

    <!-- this JS import references cboPanesID variable declared above -->
    <script src="jquery.plugin.js"></script>
</head>

Ответ 3

Используйте класс маркера в элементе управления и выберите это через jQuery.

Ответ 4

Кроме того, что немного дороже, по производительности, я не вижу ничего плохого в использовании этого селектора. В конце концов; вы получаете элементы управления, к которым хотите получить доступ.