Знайдіть елемент 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.

Сподіваюся, я зрозумів. Дякую.

Відповіді:


170

Спробуйте

$('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, було б добре додати клас на зразок "місто" до кожного з цих елементів. Потім їх можна легко порахувати.
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 мені здається більш читабельним та описовим підходом. Кожному своє, ви завжди можете скористатися запуском із селектора в jquery, як показано в інших відповідях.
Юрій Факторович

@lidermin Те, що каже Юрій, має спрацювати. Чому б вам не додати клас до елементів керування, наприклад "list", оскільки у вас є 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.