Найдите все элементы на странице, ID элемента которой содержит определенный текст, используя jQuery


131

Я пытаюсь найти все элементы на странице, идентификатор элемента которой содержит определенный текст. Затем мне нужно будет отфильтровать найденные элементы в зависимости от того, скрыты они или нет. Любая помощь приветствуется.


Ответы:


202
$('*[id*=mytext]:visible').each(function() {
    $(this).doStuff();
});

Обратите внимание, что звездочка «*» в начале селектора соответствует всем элементам .

См. Раздел « Атрибут содержит селекторы» , а также селекторы : visible и : hidden .


17
Возможно, стоит упомянуть, что при сопоставлении с элементом idвы не используете кавычки, тогда как при сопоставлении с элементом вы используете name. $('*[name*="myname"]:visible') Не самый интуитивный и догонял меня раньше.
ficuscr 03

Я заменил $ (this) .doStuff (); с помощью this.doStuff (); и работал
Карлос Лопес Мари

133

Если вы найдете по Contains, то это будет так

    $("input[id*='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Если вы найдете по " Начинается с", то это будет так

    $("input[id^='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Если вы найдете по Ends With, то это будет так

     $("input[id$='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Если вы хотите выбрать элементы, идентификатор которых не является заданной строкой

    $("input[id!='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Если вы хотите выбрать элементы, название которых содержит заданное слово, разделенное пробелами

     $("input[name~='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Если вы хотите выбрать элементы, идентификатор которых равен заданной строке или начинается с этой строки, за которой следует дефис

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Здравствуйте, как я могу использовать селектор для выбора тех элементов, идентификатор которых принадлежит массиву.
bpa.mdl

20

Это выбирает все DIV с идентификатором, содержащим 'foo' и которые видны

$("div:visible[id*='foo']");

Если я ищу элементы текстового поля, а не div, это просто $ ("input: visible [id * = 'foo']"); ?
user48408

это будет $ ("input [type = 'textbox'] [id * = 'foo']: visible")
karim79

1
@ port-zero - одинарные кавычки вокруг 'foo' не обязательны
karim79

если вы пытаетесь получить значение элементов (в моем случае промежутков), вы должны получить$(this)[0].innerText
Никлас

6

Спасибо вам обоим. Это отлично сработало для меня.

$("input[type='text'][id*=" + strID + "]:visible").each(function() {
    this.value=strVal;
});
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.