当前位置: 首页 > 知识库问答 >
问题:

选中时,复选框标签未设置样式

罗祺
2023-03-14

我试图创建一个复选框标签,其中复选框本身是隐藏的,但标签没有因此点击标签,选中复选框,即使没有显示。

我想做的是,当它被选中时,标签保持红色,为此我为复选框活动指定了一个类,但它不起作用。它可以在悬停状态下正常工作,但不能在活动状态下正常工作。当我单击它时,复选框会选中,但标签不会读取活动类。

有什么想法吗?

我使用以下html:

<div class="gl_delete">
    <div class="deleteCB">
        <input id="uImgId47" type="checkbox" name="uImgId[]" value="47"></input>
        <input type="hidden" name="filename[]" value="6_246f0548d62b9b9cc19210389ef09472.jpg"></input>
        <label onclick="$('#delHolder').show()" for="uImgId47"> X </label>
    </div>
</div>

还有下面的css

.deleteCB {
width: 20px;    
margin: 20px auto;
}

.deleteCB label, .deleteCB label:after {
cursor: pointer;
position: absolute;
font-weight:bold;
font-size:14px;
content: 'x';
line-height:14px;
position: absolute;
border-radius:6px;
padding-left:9px;
padding-top:3px;
color:#fff;
width: 17px;
height: 21px;
background: #ccc;
border:1px solid #ccc;
top: -1px;
right: -1px;
padding-bottom:0;
}

.deleteCB label:after {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
opacity: 0;
color:#fff;
background: #cc3333;
border:1px solid #cc3333;
}

.deleteCB label:hover::after {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
filter: alpha(opacity=100);
opacity: 1;
}

.deleteCB input[type=checkbox]:checked + label:after {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
opacity: 1;
}

/* hide checkbox */
input[type=checkbox] {
visibility: hidden;
}

共有2个答案

蒯胜泫
2023-03-14

如果我对你的理解是正确的,我只是建议通过JavaScript向你的标签添加一个类,而不是仅仅依赖CSS。您已经在您的标签上有一个onclick处理程序,所以我建议创建一个函数,在单击时调用,它处理您已经有的show()方法,并向您的标签添加一个类。

例如,超文本标记语言:

<label id="labelImgId47" onclick="onLabelClick()" for="uImgId47">...</label>

...还有JavaScript:

function onLabelClick() {
    $('#delHolder').show();
    $('#labelImgId47').addClass('active');
}

如果用户可以切换复选框开/关,您可以添加条件逻辑来检查它是否被选中,并在需要将该框显示为未选中时使用jQueryDetveClass()函数。

然后在CSS中,您可以使用activeclass设置标签样式:

.deleteCB label.active {
    // Your styles here
}
宋鸿
2023-03-14

选择器。deleteCB输入[类型=复选框]:选中标签:在之后使用相邻的同级选择器,这意味着它直接在输入[类型=复选框]:选中的元素之后拾取标签

这不起作用,因为在复选框和标签元素之间有另一个输入元素-因此您的选择器实际上是:

.deleteCB input[type=checkbox]:checked + input[type=hidden] + label:after

相反,您也可以使用常规同级组合器,它选择出现在以下位置之后的所有元素:

.deleteCB input[type=checkbox]:checked ~ label:after

下面是关于兄弟选择器的更多信息:CSS技巧:子选择器和兄弟选择器

 类似资料:
  • 问题内容: 如何在Firefox中设置复选框样式,并取消选中标记和边框? CSS: HTML: 问题答案: input[type=”checkbox”] {

  • 我已经试过了所有可能的方法,但还是没有成功。我有一个带有的模式窗口,我希望当模式打开时,的选中或取消选中应该基于数据库值。(我已经与其他表单字段一起工作了。)我开始试着检查,但没有用。 我的HTML分区: 和jQuery: 我也尝试了和其他在论坛上看到的,但似乎都不起作用。 有人能给我指出正确的方法吗? 好吧,我真的漏了点什么。如果复选框在页面中,我可以使用代码勾选/取消勾选,但如果它在模态窗口中

  • 我试图在用户选择标签时显示文本, 例如,我有以下代码: 一旦用户单击复选框,将出现以下文本: “如果您选择了是,……” 我不确定JavaScript是否是实现这一点的最佳途径。 但是,如果是的话,会是这样的吗

  • 我希望在选中表中的所有复选框时选中标题复选框,如果没有选中单个复选框,则应取消选中标题复选框。

  • 问题内容: 我正在尝试使用以下样式设置复选框: 但是没有应用样式。复选框仍显示其默认样式。如何给它指定的样式? 问题答案: 更新: 以下答案引用了CSS 3广泛使用之前的状态。在现代浏览器(包括InternetExplorer9和更高版本)中,使用首选样式创建复选框替换更为简单,而无需使用JavaScript。 值得注意的是,基本问题没有改变。您仍然不能直接将样式(边框等)应用于复选框元素,并使这

  • 我试图创建一个表单,该表单顶部有一个复选框,当用户选中该复选框时,它会选择其他特定的复选框,但不是所有复选框。我很难通过反复试验或搜索找到答案。我唯一能找到的就是“全选”选项。不是我想要的。 理想情况下,当用户选中“管理包”旁边的复选框时,我想要“Chrome外观组”和“远程启动” 下面是代码和我在这方面的基本尝试,但它不起作用。提前谢谢。 超文本标记语言: Javascript 我不知道这个Ja