Domanda

Sto cercando la documentazione sull'uso di caratteri jolly o espressioni regolari (non sono sicuro della terminologia esatta) con un selettore jQuery.

Ho cercato questo da solo, ma non sono stato in grado di trovare informazioni sulla sintassi e su come usarla. Qualcuno sa dove si trova la documentazione per la sintassi?

EDIT: i filtri degli attributi ti consentono di selezionare in base ai modelli di un valore di attributo.

È stato utile?

Soluzione

James Padolsey ha creato un meraviglioso filtro che consente a regex di essere utilizzato per la selezione.

Supponi di avere il seguente div :

<div class="asdf">
Il filtro

: regex di Padolsey può selezionarlo in questo modo:

$("div:regex(class, .*sd.*)")

Inoltre, controlla la documentazione ufficiale sui selettori .

Altri suggerimenti

Puoi utilizzare la funzione filter per applicare altro complicata corrispondenza regex.

Ecco un esempio che corrisponderebbe ai primi tre div:

$('div')
  .filter(function() {
    return this.id.match(/abc+d/);
  })
  .html("Matched!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="abcd">Not matched</div>
<div id="abccd">Not matched</div>
<div id="abcccd">Not matched</div>
<div id="abd">Not matched</div>

Questi possono essere utili.

Se lo trovi in ?? Contiene , sarà così

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

Se lo trovi in ?? Inizia con , sarà così

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

Se lo trovi in ?? Termina con , sarà così

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

Se desideri selezionare elementi il ??cui ID non è una determinata stringa

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

Se desideri selezionare elementi il ??cui ID contiene una determinata parola, delimitato da spazi

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

Se desideri selezionare elementi il ??cui id è uguale a una determinata stringa o che inizia con quella stringa seguita da un trattino

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

Se l'uso dell'espressione regolare è limitato per verificare se un attributo inizia con una determinata stringa, è possibile utilizzare il selettore ^ jquery

Ad esempio, se desideri selezionare solo div con id che inizia con " abc " ;, puoi usare $ (" div [id ^ = 'abc'] ")

Molti selettori molto utili per evitare l'uso del regex sono disponibili qui: http: // api. jquery.com/category/selectors/attribute-selectors/

var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);

Ecco qua!

id e classi sono ancora attributi, quindi puoi applicare un filtro di attributi regexp se li selezioni di conseguenza. Leggi di più qui: http://rosshawkins.net/archive /2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx

Aggiungi una funzione jQuery,

(function($){
    $.fn.regex = function(pattern, fn, fn_a){
        var fn = fn || $.fn.text;
        return this.filter(function() {
            return pattern.test(fn.apply($(this), fn_a));
        });
    };
})(jQuery);

Poi,

$('span').regex(/Sent/)

selezionerà tutti gli elementi span con corrispondenze di testo / Sent /.

$('span').regex(/tooltip.year/, $.fn.attr, ['class'])

selezionerà tutti gli elementi span con le loro classi corrispondenti a /tooltip.year/.

$("input[name='option[colour]'] :checked ")

Se vuoi solo selezionare elementi che contengono una determinata stringa, puoi usare il seguente selettore:

$ (': contiene (" stringa di ricerca ")')

Sto solo dando il mio esempio in tempo reale:

Nel javascript nativo ho usato il seguente frammento per trovare gli elementi con ID che iniziano con " select2-qownerName_select-result " ;.

document.querySelectorAll (" [id = ^ 'select2-qownerName_select-result'] ");

Quando siamo passati da javascript a jQuery abbiamo sostituito lo snippet sopra con il seguente che comporta meno modifiche al codice senza disturbare la logica.

$ (" [id = ^ 'select2-qownerName_select-risultato'] ")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top