Quale sarebbe il modo migliore per ottenere tutte le div che hanno una classe che inizia con input
? In altre parole, a
e devono essere restituiti da ciò che è di seguito, ma non c
.jQuery - ha classe che inizia con
<div id="a" class="input1 foo"></div>
<div id="b" class="foo input2"></div>
<div id="c" class="xinput3 foo"></div>
Il modo apparente, che sorprendentemente è stata accettata here, è quello di fare $("div[class^='input']");
ma, naturalmente, che manca b
. E ovviamente $("div[class*='input']");
darà un falso positivo su c
.
il meglio che potevo venire con era questa mostruosità
function getAllInputDivs() {
return $("div").filter(function (i, currentDiv) {
return $.grep($(currentDiv).attr("class").split(" "), function (val) {
return val.substr(0, "input".length) === "input";
}).length > 0;
});
}
C'è un modo più pulito? Ecco un working fiddle di quanto sopra
Non penso che i nomi di classe siano l'opzione migliore quando si hanno cose come input1 e input2. Se l'input è abbastanza unico da essere enumerato in questo modo, puoi usare ID o nomi che possono essere selezionati con '$ (" [id^= input] ")' –
@KevinB - probabilmente hai ragione. Non sono sicuro se ci sia un buon uso di questo o no. In questo momento è solo una domanda teorica per vedere se può essere fatto. –
Domanda simile: [selettore jQuery per indirizzare qualsiasi nome di classe (di più presenti) che inizia con un prefisso?] (Http://stackoverflow.com/questions/4524412/jquery-selector-to-target-any-css-name- di-multiple-present-starting-with-a-pre) ma non ho ancora creato le espressioni di selettore personalizzate, quindi mi piacciono molto le risposte a questa domanda :) – BoltClock