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

131

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

user48408
источник
возможный дубликат регулярных выражений селектора JQuery
Роберт Маклин,

Ответы:

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

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

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

karim79
источник
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
     });
dnxit
источник
Здравствуйте, как я могу использовать селектор для выбора тех элементов, идентификатор которых принадлежит массиву.
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;
});
user48408
источник