2つの解決策を紹介します:
- 既存の CSS でロジックを使用するもの
- CSS なし (! はい、なし !)
次のようなselect
名前とoptions
値があるとします。
<select name="bg">
<option value="">Background</option>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<select name="color">
<option value="">Color</option>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
選択した名前と値 (存在する場合) を取得し、次のように配列内で結合します (選択後の例)。
["bg-red", "color-blue"]
その配列をクラスとして設定するには、CSS 内でこれらすべてのクラスを準備する必要があります。
.bg-red{
background:red;
}
.bg-blue{
background:blue;
}
.bg-green{
background:green;
}
.color-red{
color:red;
}
.color-blue{
color:blue;
}
.color-green{
color:green;
}
.attr('class', classesArr.join(' '))
すべての要素の目的のクラスを再構築するために使用できるよりも。
LIVE DEMO
function createClasses( element ){
var classesArr = []; // array to store all the classes
$('select').each(function(){
var myVal = this.value; // get the value // blue, red, green
if(myVal.length) // it there's a value join the value with the select name, ex: bg-blue, bg-red .... or color-blue, color-red ....
classesArr.push( this.name +'-'+ this.value );
});
console.log(classesArr); // open console to see what happens!
$(element).attr('class', classesArr.join(' ') ); // rebuild all the new classes
}
$("select").on("change", function(){
createClasses( "#arrowlink" ); // run function and pass as argument the desired element to play with
});
編集:最も簡単な解決策!
なぜこれらすべてのクラスに煩わされているのかわかりませんので、次の簡単なトリックを使用して、これらすべてのクラスを作成する際の頭痛の種を取り除くことをお勧めします。
LIVE DEMO
CSS:
CSSなし!!!!!
HTML:
<div id="arrowlink">ARROW LINK</div>
Please set:
<select name="background-color">
<option value="">Background</option>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<select name="color">
<option value="">Font Color</option>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<select name="font-size">
<option value="">Size</option>
<option value="9">9</option>
<option value="12">12</option>
<option value="18">18</option>
<option value="24">24</option>
</select>
jQuery の.css()
メソッドの例のオブジェクトを作成します。
function createClasses( element ){
var classesArr = {};
$('select').each(function(){
var myVal = this.value ;
if(myVal.length) classesArr[this.name] = this.value;
});
console.log(classesArr);
$(element).css(classesArr);
}
$("select").on("change", function(){
createClasses( "#arrowlink" );
});