0

この関数を使用して標準の html チェックボックスを置き換えています。現在配置されている場所でlabel forはなく、属性から呼び出したいと思います。<div>

<div>の代わりに子を呼び出せるように変更する方法がわかりませんonclick="toggle_colorbox(this);"。これを多数のチェックボックスに使用しているため、IDで呼び出したくありません。

HTML

<label for="color_Black"><div style="background-color: #000000" class="color" onclick="toggle_colorbox(this);"><div class=CheckMark>&#10003;</div>
<input type="checkbox" name="color[]" value="Black" id="color_Black" class="cbx"/></div>Black</label>

JS

function toggle_colorbox(span) {
    div = span.getElementsByTagName('div')[0];
    cb = span.getElementsByTagName('input')[0];
    if (cb.checked == false) {
        div.style.visibility = "visible";
        span.className = "color ColorboxSelected";
        cb.checked = true;
    }
    else {
        div.style.visibility = "hidden";
        span.className = "color";
        cb.checked = false;
    }
}

CSS

.color { border: 1px solid silver; vertical-align:baseline; margin-right:4px; width: 1.65em; height:1.65em; font-size:8px;float:left;  }
.color input {height: 100%; width: 100%; font-size:200%;}
.ColorboxSelected {opacity: 0.5; filter: alpha(opacity = 50);}  
.ColorboxSelected .CheckMark {visibility: visible; }        
.CheckMark {position:relative; top:-2px; vertical-align:middle; text-align:center ; color:white; font-family: Arial Narrow; font-size:1.6em;  display:block; visibility:hidden; }   /* text-shadow: black 0.1em 0.1em 0.2em;*/
.cbx { visibility:hidden; display:none;}
4

2 に答える 2

1

次のことができます。これにより、トグル関数が class の任意のラベルをクリックすると起動するように設定されますtoggle。そのラベル内で直接 div とチェックボックスを探します。

HTML:

<label class="toggle" for="color_Black"><div style="background-color: #000000" class="color"><div class=CheckMark>&#10003;</div>
<input type="checkbox" name="color[]" value="Black" id="Checkbox1" class="cbx"/></div>Black</label>

JS:

$(".toggle").on("click", function toggle_colorbox() {
    $div = $(this).children('div');
    $cb = $(this).find('input');
    $innerdiv = $div.find('div');

    if (!$cb.is(':checked')) {    
        $innerdiv.show();
        $div.addClass("ColorboxSelected");
        $cb.prop('checked', true);
    }
    else {
        $innerdiv.hide();
        $div.removeClass("ColorboxSelected");
        $cb.prop('checked', false);
    }
    return false;

});

フィドル: http://jsfiddle.net/aLJwH/1/

編集:作業コードをフィーチャーした今すぐ回答してください!

于 2013-02-26T22:19:23.703 に答える
1

ラベルから呼び出したい場合は、次のように子 DIV を取得できます...

<label for="color_Black" onclick="toggle_colorbox(this.children[0]);">
于 2013-02-26T22:32:48.190 に答える