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

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

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

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


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

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


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

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

Ответы [ 4 ]

8 голосов
/ 02 октября 2008
$("#<%= cboPanes.ClientID %>")

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

3 голосов
/ 03 октября 2008

Одна вещь, которую я делал в прошлом (в 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>
2 голосов
/ 02 октября 2008

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

2 голосов
/ 02 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...