Найдите элемент 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()
SLaks
источник
ну, он хорошо работает для вышеуказанных простых идентификаторов элементов управления. Как заставить его работать в таких сценариях, как у меня есть элементы управления с такими идентификаторами «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
Иногда необходимо иметь несколько элементов с одним и тем же классом, но с разными идентификаторами.
Винсент
5

Используйте селектор «атрибут начинается с» http://api.jquery.com/attribute-starts-with-selector/

$("[id^=list_]")

Имейте в виду, что это неэффективно. Префикс с именем тега и, если возможно, по убыванию от ближайшего родителя.

Четан С
источник
1

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

find('[id$=someid]')

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

find('[id*=anotherid]')

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

find('[id^=id]')
Харун Халид
источник