2008-10-02 1 views
15

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

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

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


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

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


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

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

+0

+1 # 1 Google для «Jquery управления списком» – jrcs3 2009-04-17 20:31:52

ответ

2

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

+0

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

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

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

+0

Да, это здорово, если вам нужен еще лишний текст на странице и еще более неудобный опыт чтения. – ppumkin 2014-07-16 15:08:28

2

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

3

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

Нечто подобное, должно позволить вам воспользоваться кэширования и все еще позволяют вам иметь точные идентификаторы клиентов:

<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> 
Смежные вопросы