Ich verwende Select2 4.0. Ich habe eine Liste mit Optionen, von denen einige "gelöscht" sind und ich möchte angeben, welche welche sind. Mein select-Element ist wie folgt:Wie man <option> Attribute an select2 übergibt?
<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>
Und es ist wie folgt initialisiert:
<script src="/static/js/select2.min.js"></script>
<script>
$(function() {
$("#item-list").select2({
placeholder: 'Select item'
});
});
</script>
Doch auf dem resultierenden HTML-Code, der select2 ich jede mögliche Weise nicht sehen, erzeugt die Klasse zu verweisen. Auch versuchte ein data-deleted
Attribut auf der Option, ohne Glück.
Die einzige Sache, die ich sehe, die nahe kommt, ist die templateResult
Option, in der ich nach opt.element.className
überprüfen kann. Aber ich kann nicht sehen, wie man von dort auf die select2-Option zugreift. Jedenfalls läuft dieser Rückruf bei jeder einzelnen Suche, was ich nicht will.
Gibt es eine andere Möglichkeit, bestimmte Optionen in Select2 zu stylen?
UPDATE: wie in den Kommentaren darauf hingewiesen, gibt es eine find()
Funktion, aber das wird nur die ursprünglichen <option>
Elemente, nicht die <li>
Elemente, die select2 erzeugt. Hier ist, was ich versucht:
var sel2 = $("#item-list").select2({
placeholder: 'Select item'
});
sel2.find('.deleted').each(function() {
$(this).css('color', 'red');
});
@isherwood was meinst du, welche Daten? – DisgruntledGoat
Der HTML-Code wird serverseitig erzeugt, also ist die Seite genau wie mein Code in der Frage. – DisgruntledGoat
In diesem Fall sieht es so aus, als könnten Sie mit 'find()' Attribute erhalten: http://stackoverflow.com/questions/22261209/get-custom-data-attribute-in-select2-with-select/22261210#22261210 – isherwood