1

チェックボックスがチェックされ、デフォルトの不透明度が0.5(半分の不透明度)に設定されたら、チェックボックスの画像の不透明度を1.0(通常の不透明度)に変更したい。しかし、JavaScript と CSS のコーディングについてはまったくわかりません。

<input type="checkbox" id="n1" name="n1" style="display: none;" /><label for="n1"><img src="images/n1.png" width="20" height="20" /></label>
<input type="checkbox" id="n2" name="n2" style="display: none;" /><label for="n2"><img src="images/n2.png" width="20" height="20" /></label>

...

<input type="checkbox" id="n50" name="n50" style="display: none;" /><label for="n2"><img src="images/n50.png" width="20" height="20" /></label>
4

2 に答える 2

1

JS を使用せず、CSS だけで行う方法を次に示します。

label img {
    opacity : 0.5;
}
input[type=checkbox]:checked + label img {
    opacity : 1;
}

デモ: http://jsfiddle.net/W2hHg/

これは隣接する兄弟セレクター+を使用するため、対応するチェックボックス要素の直後にあるラベル要素に依存していることに注意してください。

ただし、 CSS:checkedセレクターを実装しない IE<=8 をサポートしたい場合は、label img上記のクラスを定義してデフォルトの不透明度を設定し、チェックしたときに次のクラスを定義することをお勧めします。

label.checked img {
    opacity : 1;
}

...そして、JS を使用してそのクラスを追加および削除します。

document.onclick = function(e) {
    if (!e) e = window.event;
    var el = e.target || e.srcElement;
    if (el.type === "checkbox") {
        if (el.checked)
            el.nextSibling.className += " checked";
        else
            el.nextSibling.className = el.nextSibling.className.replace(/\bchecked\b/,"");
    }
};

デモ: http://jsfiddle.net/W2hHg/2/

于 2013-11-10T11:10:42.110 に答える
0

これを試してみませんか?

 $(document).ready(function(e) {
    $('input:checkbox').click(function(){    

     var ImgId = 'img_'+$(this).attr('id');              
       if( $(this).is(':checked')) {
           $("#"+ImgId).css('opacity', '0.5');
         } else {
            $("#"+ImgId).css('opacity', '1');
          }             


        });//end click
 });//end ready

HTML:

    <input type="checkbox" id="n1" name="n1"  /><label for="n1"><img src="images/n1.png" width="20" height="20" id='img_n1' /></label>
    <input type="checkbox" id="n2" name="n2" /><label for="n2"><img src="images/n2.png" width="20" height="20"  id='img_n2'/></label>
于 2013-11-10T11:12:41.713 に答える