0

私は、各 div を一度に 1 つずつ、他の div よりも少し不透明にしようとしています。ご覧のとおり、変数を作成することで、すでに一部を単純化しています。

var f1 = $('#f1');
var f2 = $('#f2');
var f3 = $('#f3');
var f4 = $('#f4');

if(art==1){
f1.css('opacity',1);
f2.css('opacity',0.9);
f3.css('opacity',0.9);
f4.css('opacity',0.9);
}else if(art==2){
f1.css('opacity',0.9);
f2.css('opacity',1);
f3.css('opacity',0.9);
f4.css('opacity',0.9);
}else if(art==3){
f1.css('opacity',0.9);
f2.css('opacity',0.9);
f3.css('opacity',1);
f4.css('opacity',0.9);
}else if (art==4){
f1.css('opacity',0.9);
f2.css('opacity',0.9);
f3.css('opacity',0.9);
f4.css('opacity',1);
}
4

3 に答える 3

4
$("#f1,#f2,#f3,#f4").css("opacity", 0.9);
$("#f" + art).css("opacity", 1);

または1行で次のことができます:

$("#f1,#f2,#f3,#f4").css("opacity", 0.9).filter("#f" + art).css("opacity", 1);

#f+art に対応する div の不透明度の変化が見られるかどうかは非常に疑わしいですが、そうであれば、次のように修正できる方法があります。

$("#f1,#f2,#f3,#f4").not("#f" + art).css("opacity", 0.9);
$("#f" + art).css("opacity", 1);

これは、既に指定した値の 1 つを除外するのはちょっと奇妙ですが、それ以外の場合は、その値を削除するために追加のロジックを使用する必要があると思います。

PS。これはコードの匂いです (f+art)

于 2012-02-22T00:35:46.410 に答える
0

どうですか

var f1 = $('#f1');
var f2 = $('#f2');
var f3 = $('#f3');
var f4 = $('#f4');

var fAll = $([f1, f2, f3, f4]);

fAll
   .css('opacity',0.9)
   .eq(art-1) // -1 because arrays are 0-based
   .css('opacity',1);

jQuery が結果セット (単一の要素だけでなく) をどのように使用するか、およびそれらをトラバースして操作する方法について少し読む必要があります。

于 2012-02-22T00:36:43.440 に答える
0

これはあまり単純化されていませんが、優れた構造です。

var f1 = $("#f1"),
f2 = $("#f2"),
f3 = $("#f3"),
f4 = $("#f4");
art == 1 ? (f1.css("opacity", 1), f2.css("opacity", .9), f3.css("opacity", .9), f4.css("opacity", .9)) : art == 2 ? (f1.css("opacity", .9), f2.css("opacity", 1), f3.css("opacity", .9), f4.css("opacity", .9)) : art == 3 ? (f1.css("opacity", .9), f2.css("opacity", .9), f3.css("opacity", 1), f4.css("opacity", .9)) : art == 4 && (f1.css("opacity", .9), f2.css("opacity", .9), f3.css("opacity", .9), f4.css("opacity", 1))
于 2012-11-09T00:21:25.277 に答える