使用IE 7或8时,如果隐藏,则单击标签不检查复选框

Tom*_*Tom 8 javascript checkbox jquery label clickable

我正在尝试使用与checkbox元素关联的标签创建一个自定义设计的复选框,并隐藏(display:none)复选框.

这在除IE之外的所有浏览器中都能正常工作,这需要使复选框可见,以便标签可以点击.

这是我的代码......

HTML

<input type="checkbox" id="myCheck" />?
Run Code Online (Sandbox Code Playgroud)

CSS

label.checkbox {
    border:1px solid #666;
    width:25px;
    height:23px;
    display:block; 
}?
Run Code Online (Sandbox Code Playgroud)

jQuery的

$("input[type=checkbox]").each(function() {
    $(this).hide().before('<label for="' + $(this).attr("id") + '" class="checkbox"></label>');
});

$("input[type=checkbox]").live('change', function() {
    if ($(this).prop('checked') == true) {
        $('label[for=' + $(this).attr("id") + ']').html("X")
    } else {
        $('label[for=' + $(this).attr("id") + ']').html("")
    }
});?
Run Code Online (Sandbox Code Playgroud)

或者是jsfiddle

oca*_*nal 9

我不知道是否有更有效的方法来做到这一点,但你可以通过设置页面外的复选框元素位置来做到这一点,

.hiddenEl {
   position:absolute;
   top: -3000px;
}


$("input[type=checkbox]").each(function() {
    $(this).addClass("hiddenEl").before('<label for="' + $(this).attr("id") + '" class="checkbox"></label>');
});
Run Code Online (Sandbox Code Playgroud)

DEMO


UPDATE

而且你也可以将checbox opacity设置为零,这将隐藏它而不使用"dispayl:none",

$(this).css("opacity", 0)
Run Code Online (Sandbox Code Playgroud)

要么

$(this).fadeTo(0, 0)
Run Code Online (Sandbox Code Playgroud)

  • 注意:通常最好使用`left:-3000px`而不是`top:-3000px`(或9999px).当您使用`top`单击标签时,焦点将设置为单选按钮,IE8将尝试将其置于视图中 - 具有滚动到页面顶部的不幸副作用.因此,如果您的内容水平放置而没有水平滚动条,最好使用"left"而不是"top" (7认同)