Encontre todos os elementos em uma página cujo ID do elemento contenha um determinado texto usando jQuery

130

Estou tentando encontrar todos os elementos em uma página cujo ID do elemento contém um determinado texto. Em seguida, precisarei filtrar os elementos encontrados com base em se eles estão ocultos ou não. Qualquer ajuda é muito apreciada.

user48408
fonte
possível duplicata de seletor jQuery expressões regulares
Robert MacLean

Respostas:

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

Observe que o asterisco '*' no início do seletor corresponde a todos os elementos .

Consulte o Atributo contém seletores , bem como os seletores : visible e : hidden .

karim79
fonte
17
Talvez valha a pena mencionar que ao fazer a correspondência com um elemento, idvocê não usa aspas, enquanto que ao fazer a correspondência com um elemento, namevocê faz. $('*[name*="myname"]:visible') Não é o mais intuitivo e já me alcançou antes.
Ficção Científica #
Substituí $ (this) .doStuff (); com this.doStuff (); e trabalhou
Carlos López Marí
133

Se você encontrar por Contains , será assim

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

Se você encontrar pela Starts With , será assim

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

Se você encontrar pelo Ends With , será assim

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

Se você deseja selecionar elementos cujo id não é uma determinada string

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

Se você deseja selecionar elementos cujo nome contenha uma determinada palavra, delimitada por espaços

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

Se você deseja selecionar elementos cujo id é igual a uma determinada string ou começa com essa string seguida por um hífen

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
dnxit
fonte
Olá, como posso usar um seletor para selecionar os elementos cujo ID pertence a uma matriz.
Bpa.mdl 17/05/19
20

Isso seleciona todos os DIVs com um ID contendo 'foo' e que são visíveis

$("div:visible[id*='foo']");
porta zero
fonte
Se estou procurando elementos da caixa de texto em vez de divs, é simplesmente $ ("input: visible [id * = 'foo']"); ?
user48408
seria $ ("input [type = 'textbox'] [id * = 'foo']: visible") #
karim79
1
@ porto de zero - as aspas simples 'foo' não são necessárias
karim79
se você está tentando obter o valor dos elementos (no meu caso se estende), você deve obter$(this)[0].innerText
Niklas
6

Graças a vocês dois. Isso funcionou perfeitamente para mim.

$("input[type='text'][id*=" + strID + "]:visible").each(function() {
    this.value=strVal;
});
user48408
fonte