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

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

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

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


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

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


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

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

+1 # 1 Google для "управления списком jquery"

jrcs3 18.04.2009 00:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
1
30 280
4

Ответы 4

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

Хотя это работает, если вы приверженец правильной семантики (используя классы как классы, а не идентификаторы), это не идеально. Кроме того, выбор по имени класса НАМНОГО медленнее, чем выбор по идентификатору.

John Sheehan 03.10.2008 07:40

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

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

Да, это здорово, если вам нужно еще больше ненужного текста на странице и еще более неудобное чтение.

Piotr Kula 16.07.2014 19:08

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

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

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

<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>

Другие вопросы по теме