Ответ 1
$("#<%= cboPanes.ClientID %>")
Это будет динамически вводить идентификатор DOM элемента управления. Конечно, это означает, что ваш JS должен находиться в файле ASPX, а не в внешнем JS файле.
При реализации моего первого значимого script с использованием jquery мне нужно было найти определенный веб-элемент управления на странице. Поскольку я работаю с DotNetNuke, не гарантируется контроль ClientID, поскольку управление контейнером может меняться с сайта на сайт. Я закончил использование селектора атрибутов, который ищет идентификатор, который заканчивается идентификатором сервера управления.
$("select[id$='cboPanes']")
Похоже, что это не лучший метод. Есть ли другой способ сделать это?
@Roosteronacid. Пока я получаю элементы управления, которые я хочу, я стараюсь следовать за идиомами для данной технологии/языка. Когда я программирую на С#, я стараюсь сделать это так, чтобы лучше использовать возможности С#. Поскольку это мое первое усилие при использовании jQuery, и поскольку это будет использоваться 10 тысячами пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.
@toohool - это определенно работает, но, к сожалению, мне нужно сохранить javascript в отдельных файлах по соображениям производительности. Вы не можете очень эффективно использовать кеширование, если вы встраиваете javascript, поскольку каждая "страница" динамически генерируется. Я в конечном итоге отправляю один и тот же javascript для клиента снова и снова, только потому, что изменился другой контент на странице.
@Roosteronacid. Пока я получаю элементы управления, которые я хочу, я стараюсь следовать за идиомами для данной технологии/языка. Когда я программирую на С#, я стараюсь сделать это так, чтобы лучше использовать возможности С#. Поскольку это мое первое усилие при использовании jQuery, и поскольку это будет использоваться 10 тысячами пользователей, я хочу убедиться, что создаю код, который также является хорошим примером для других.
@toohool - это определенно работает, но, к сожалению, мне нужно сохранить javascript в отдельных файлах по соображениям производительности. Вы не можете очень эффективно использовать кеширование, если вы встраиваете javascript, поскольку каждая "страница" динамически генерируется. Я в конечном итоге отправляю один и тот же javascript для клиента снова и снова, только потому, что изменился другой контент на странице.
$("#<%= cboPanes.ClientID %>")
Это будет динамически вводить идентификатор DOM элемента управления. Конечно, это означает, что ваш JS должен находиться в файле ASPX, а не в внешнем JS файле.
Одна вещь, которую я делал в прошлом (в 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>
Используйте класс маркера в элементе управления и выберите это через jQuery.
Кроме того, что немного дороже, по производительности, я не вижу ничего плохого в использовании этого селектора. В конце концов; вы получаете элементы управления, к которым хотите получить доступ.