При реализации моего первого значительного скрипта с использованием jquery мне нужно было найти на странице определенный веб-элемент управления. Поскольку я работаю с DotNetNuke, нет гарантии для элементов управления ClientID, поскольку элемент управления контейнера может меняться от сайта к сайту. В итоге я использовал селектор атрибутов, который ищет идентификатор, который заканчивается идентификатором сервера элемента управления.
$("select[id$='cboPanes']")
Похоже, это не лучший метод. Есть другой способ сделать это?
@Roosteronacid - пока я получаю нужные элементы управления, я стараюсь следовать идиомам для данной технологии / языка. Когда я программирую на C#, я стараюсь делать это так, чтобы наилучшим образом использовать возможности C#. Поскольку это моя первая попытка по-настоящему использовать jQuery, и поскольку он будет использоваться десятками тысяч пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.
@toohool - это определенно сработает, но, к сожалению, мне нужно хранить javascript в отдельных файлах по соображениям производительности. Вы не сможете очень хорошо воспользоваться преимуществами кеширования, если встроите javascript, поскольку каждая «страница» генерируется динамически. Я бы в конечном итоге отправлял клиенту один и тот же javascript снова и снова только потому, что другой контент на странице изменился.
@Roosteronacid - пока я получаю нужные элементы управления, я стараюсь следовать идиомам для данной технологии / языка. Когда я программирую на C#, я стараюсь делать это так, чтобы наилучшим образом использовать возможности C#. Поскольку это моя первая попытка по-настоящему использовать jQuery, и поскольку он будет использоваться десятками тысяч пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.
@toohool - это определенно сработает, но, к сожалению, мне нужно хранить javascript в отдельных файлах по соображениям производительности. Вы не сможете очень хорошо воспользоваться преимуществами кеширования, если встроите javascript, поскольку каждая «страница» генерируется динамически. Я бы в конечном итоге отправлял клиенту один и тот же javascript снова и снова только потому, что другой контент на странице изменился.





Используйте класс маркера для элемента управления и выберите его через jQuery.
Хотя это работает, если вы приверженец правильной семантики (используя классы как классы, а не идентификаторы), это не идеально. Кроме того, выбор по имени класса НАМНОГО медленнее, чем выбор по идентификатору.
$("#<%= cboPanes.ClientID %>")
Это будет динамически вводить DOM ID элемента управления. Конечно, это означает, что ваш JS должен быть в файле ASPX, а не во внешнем файле JS.
Да, это здорово, если вам нужно еще больше ненужного текста на странице и еще более неудобное чтение.
Помимо того, что он немного дороже с точки зрения производительности, я не вижу ничего плохого в использовании этого селектора. После всего; вы получаете элементы управления, к которым хотите получить доступ.
Одна вещь, которую я делал в прошлом (в 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>
+1 # 1 Google для "управления списком jquery"