私はすべてのオプションでif/ternaryを追加するのは地獄だと思うので、自分の実装を作成しました。
それはちょっと次のようになります。
jQueryのソリューション:私は私のファイルの最後にそれを置くため
$("select[data-svalue]").each(function(){
$(this).val($(this).data('svalue')).trigger('change'); //I trigger change because of select2, but if you don't use any plugins for select, you won't need it here.
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select data-svalue="3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
私は$(document).ready()
のまわりでそれをラップしていない、と.ready
にはわずかな遅延がありましたが、変更がなければ即時に変更されました。
Javascriptの唯一のソリューション:
document.querySelectorAll('select[data-svalue]').forEach(function(el){
el.value = el.dataset.svalue;
})
<select data-svalue="3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
あなたは、Internet Explorer(< 11)の古いバージョンをサポートしたい場合は、あなたのコードにこれを追加し、または単にfor
の代わりに使用することができますforEach
。
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(fn, scope) {
for(var i = 0, len = this.length; i < len; ++i) {
fn.call(scope, this[i], i, this);
}
};
}
これは完全に機能しました。おかげでQuasdunk! –
@JohnnyCraigよろしくお願いします! – Quasdunk