Найдите элемент html, идентификатор которого начинается с


89

мой вопрос таков:

У меня есть HTML-код на нескольких страницах, на каждой из которых я использовал JQgrid (сетку jquery) для отображения некоторых данных. Я знал, что на каждой из этих страниц элемент, содержащий JQgrid, называется «LIST_xxx». Теперь мне нужно создать javascript, который принимает этот элемент «LIST_XXXX» на каждой странице и выполняет некоторые действия. Как я мог искать элемент по идентификатору, но зная только его начальную часть (идентификатора, как я упоминал ранее):

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Надеюсь, я ясно выразился. Спасибо.

Ответы:


171

Пытаться

$('div[id^="list_"]')

Он должен работать


Намного лучший макет по этой ссылке, чем в документации jquery.
— Юрий Факторович

Это отлично работает, спасибо ... Я использовал его, чтобы найти идентификатор, заканчивающийся определенным значением, например if ($ ('div [id $ = "' + val + '"]'). Length> 0) выполнить что-то;
— raphie

ну, он хорошо работает для вышеуказанных простых идентификаторов элементов управления. Как заставить его работать для таких сценариев, как у меня есть элементы управления с такими идентификаторами «txt_0_city», «txt_1_city», «txt_2_city», «txt_3_city» и т. Д., И я хочу, чтобы количество всех таких элементов, имеющих такие идентификаторы, как «txt _ * _ city» "
— Раджив Бхардвадж

@Rajiv, если у вас есть контроль над html, было бы хорошо добавить класс типа «city» к каждому из этих элементов. Затем вы можете легко их сосчитать.
— Glen Little

@Rajiv, если вы не можете улучшить html, проверьте api.jquery.com/multiple-attribute-selector - вы можете комбинировать селекторы. Например, $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
— Глен Литтл,

22

Вам нужно использовать атрибут, начинающийся с селектора , например:

$('[id^=list_]').whatever()

ну, он хорошо работает для вышеуказанных простых идентификаторов элементов управления. Как заставить его работать в таких сценариях, как у меня есть элементы управления с такими идентификаторами «txt_0_city», «txt_1_city», «txt_2_city», «txt_3_city» и т. Д., И я хочу, чтобы количество всех таких элементов, имеющих такие идентификаторы, как «txt _ * _ city» "
— Раджив Бхардвадж

Привет @Rajiv, добро пожаловать в stackoverflow. Я ответил на вторую копию вашего комментария.
— Glen Little

8

Дайте этому элементу общее имя класса или какой-либо другой атрибут, который вы можете запросить.


Привет, спасибо за ваш ответ, проблема с вашим предложением заключается в том, что может быть несколько таблиц, содержащих JQgrid, поэтому могут быть: «LIST_customer», «LIST_carrier» ... и так далее. И мне нужно выбрать их обоих на основе только начальной части идентификатора: «LIST_».
— lidermin

1
Я понимаю, но превращение их всех в класс List кажется мне более читабельным и описательным подходом. Каждому свое, вы всегда можете использовать селектор start with в jquery, как показано другими ответами.
— Юрий Факторович

@lidermin То, что говорит Юрий, должно работать. Почему бы вам не добавить класс к своим элементам управления, такой как «список», если у вас есть list_ в качестве префикса. поэтому, когда вы выберете этот класс, он получит каждый из этих элементов управления. Это будет наиболее эффективный способ сделать это.
— Джош Мейн,

Юрий ответ сработает. Вы можете добавить один и тот же класс (например, «ListsINeedToFind») ко всем вашим элементам «LIST_XXXX», а затем искать их, используя $('.ListsINeedToFind').
— Annabelle

Иногда необходимо иметь несколько элементов с одним и тем же классом, но с разными идентификаторами.
— Винсент


1

Чтобы получить элемент, заканчивающийся определенным идентификатором / символом

find('[id$=someid]')

Чтобы получить элемент, начинающийся с определенного идентификатора / символа

find('[id*=anotherid]')

Чтобы получить элемент, соответствующий определенному идентификатору / символу

find('[id^=id]')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.