espressioni regolari del selettore jQuery

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

L’ho cercato personalmente ma non sono riuscito a trovare informazioni sulla syntax e su come usarlo. Qualcuno sa dove è la documentazione per la syntax?

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

James Padolsey ha creato un meraviglioso filtro che consente di utilizzare la regex per la selezione.

Di ‘che hai la seguente div :

 

Padolsey :regex filtro :regex può selezionarlo in questo modo:

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

Inoltre, controlla la documentazione ufficiale sui selettori .

È ansible utilizzare la funzione filter per applicare una corrispondenza regex più complessa. Ecco un esempio che corrisponderebbe solo ai primi tre div (demo live qui ):

 
 $('div') .filter(function() { return this.id.match(/abc+d/); }) .html("Matched!"); 

Questi possono essere utili.

Se lo trovi da Contains, allora sarà così

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

Se stai trovando da Inizia con, allora sarà così

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

Se stai trovando per Ends With, allora sarà così

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

Se si desidera selezionare elementi che id non è una determinata stringa

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

Se si desidera selezionare elementi che identificano una determinata parola, delimitati da spazi

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

Se si desidera selezionare gli elementi che id è uguale a una determinata stringa o che iniziano con quella stringa seguita da un trattino

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

Se il tuo uso dell’espressione regolare è limitato a verificare se un attributo inizia con una determinata stringa, puoi usare il selettore ^ jquery

Per esempio se vuoi selezionare solo div con id che inizia con “abc”, puoi usare $("div[id^='abc']")

Un sacco di selettori molto utili per evitare l’uso di regex possono essere trovati qui: http://api.jquery.com/category/selectors/attribute-selectors/

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

Ecco qui!

ID e classi sono ancora attributi, quindi puoi applicare un filtro attributo regexp a loro se selezioni di conseguenza. Maggiori informazioni 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 di span con corrispondenze di testo / Inviato /.

 $('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 si desidera solo selezionare gli elementi che contengono una determinata stringa, è ansible utilizzare il seguente selettore:

$(':contains("search string")')

Sto solo dando il mio esempio in tempo reale:

In javascript nativo ho usato il seguente snippet per trovare gli elementi con id che iniziano con “select2-qownerName_select-result”.

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

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

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