Come ottenere elementi di classi specifiche a partire da una determinata stringa?

Ho una lista di elementi che hanno più classi, per esempio:

   

Come scrivere jQuery-code che mi permetterà quanto segue …

 $(".etape").click(function(){ $(this).get("the class that starts with btn-") // in order to store this value in a variable to reuse it later }); 

Puoi usare l’espressione regolare o split il nome della class.

 $(".etape").click(function(){ var classs = $.grep(this.className.split(" "), function(v, i){ return v.indexOf('btn') === 0; }).join(); }); 

http://jsfiddle.net/LQPh6/

Puoi anche provare:

 $(".etape").click(function () { var theClass = $(this).attr("class").match(/btn[\w-]*\b/); console.log(theClass); }); 

Usa match invece di grep …

  // Only select input which have class $('input[class]').click(function(){ var myClass; // classNames will contain all applied classs var classNames = $(this).attr('class').split(/\s+/); // iterate over all class $.each(classNames, function(index, item) { // Find class that starts with btn- if(item.indexOf("btn-") == 0){ // Store it myClass = item; } }); }); 

Dimostrazione dal vivo

Probabilmente sarebbe meglio memorizzare quei valori nell’attributo dei data :

    

Poi:

  $(".etape").click(function(){ var myBtnType = $(this).data('btntype'); }); 

jsFiddle

Potresti semplicemente fare la sua stessa class. Tuttavia, funzionerà.

 $("div[class^='btn-']") 

Prova questo: $('input[class*='btn']').attr("class");

Ho appena trasformato la funzione di @Vohuman in riutilizzabile:

 // getClassStartsWith(classs,startswith); // Example : getClassStartsWith( 'item w-2 h-4 hello' , 'h-' ); function getClassStartsWith(t,n){var r=$.grep(t.split(" "),function(t,r){return 0===t.indexOf(n)}).join();return r||!1} 

Esempio…

HTML:

 

JS:

 var $element = $('.item'); var classs = $element[0].className; var getHeight = getClassStartsWith(classs,'h-'); 

Questo restituirà h-4 , e se nessuna class inizia con h- restituirà false

Demo: http://jsbin.com/mijujunaca/edit?js,console

Cosa ne pensi di questo? http://api.jquery.com/attribute-contains-word-selector/

 $('input[class~="btn-"]') 

Una class che inizia con btn e che non può essere la prima class:

Working fiddle: http://jsfiddle.net/c9Tdx/

 $("input[class^='btn'],input[class*=' btn']").each(function(){ //whatever }); 

Prova questo,

 if($(selector).attr("class").lastIndexOf("classToStartFrom") == 0) return "this selector class name starts with 'classToStartFrom'"; else return "this selector class name doesn't start with 'classToStartFrom'"; 

Il codice non è testato.