Sto usando Select2 4.0. Ho una lista di opzioni, alcune delle quali sono "cancellate" e voglio indicare quali sono quali. Il mio elemento di selezione è come questo:Come passare gli attributi <option> per selezionare2?
<style>.deleted { color: red; }</style>
<select name="itemid" id="item-list" tabindex="1">
<option></option>
<option value="1">Item 1</option>
<option value="2" class="deleted">Item 2</option>
<option value="3">Item 3</option>
</select>
Ed è inizializzato in questo modo:
<script src="/static/js/select2.min.js"></script>
<script>
$(function() {
$("#item-list").select2({
placeholder: 'Select item'
});
});
</script>
Tuttavia, sul codice HTML risultante che select2 genera non vedo alcun modo per fare riferimento a quella classe. Ho anche provato un attributo data-deleted
sull'opzione, senza fortuna.
L'unica cosa che vedo che si avvicina è l'opzione templateResult
, dove posso controllare per opt.element.className
. Ma non riesco a vedere come accedere all'opzione select2 da lì. Ad ogni modo quella callback funziona su ogni singola ricerca che non è affatto ciò che voglio.
C'è qualche altro modo per assegnare particolari opzioni in Select2?
UPDATE: come notato nei commenti c'è una funzione find()
, ma che ottiene solo gli <option>
elementi originali, non le <li>
elementi che select2 genera. Ecco quello che ho provato:
var sel2 = $("#item-list").select2({
placeholder: 'Select item'
});
sel2.find('.deleted').each(function() {
$(this).css('color', 'red');
});
@isherwood cosa intendi, quali dati? – DisgruntledGoat
L'HTML è generato lato server, quindi la pagina è esattamente come il mio codice nella domanda. – DisgruntledGoat
In questo caso, sembra che tu possa ottenere attributi usando 'find()': http://stackoverflow.com/questions/22261209/get-custom-data-attribute-in-select2-with-select/22261210#22261210 – isherwood