复选框隐藏黑客

Posted

技术标签:

【中文标题】复选框隐藏黑客【英文标题】:Checkbox hide Hack 【发布时间】:2017-11-09 12:25:29 【问题描述】:

我尝试隐藏/显示 div“游戏类型”,但如果输入复选框在列表项中,则以下代码不会运行,我不明白为什么

是否可以在不使用js的情况下通过“no-game”输入禁用“pc”和“xbox”输入?

input[type = checkbox]# no - game: checked~#gametype 
  display: none;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <section>
    <h3>Worauf spielst du:</h3>
    <ul>
      <li>
        <input id="PC" name="PC" type="checkbox">
        <label for="PC" class="side-label">PC</label>
      </li>
      <li>
        <input id="Xbox" name="Xbox" type="checkbox">
        <label for="Xbox" class="side-label">Xbox</label>
      </li>
      <li>
        <input id="no-game" name="no-game" type="checkbox" checked>
        <label for="no-game" class="side-label">nichts</label>
      </li>
      <div id="gametype" class="gametype">
        <h3>Was spielst du:</h3>
        <li>
          <input id="MMO" name="MMO" type="checkbox">
          <label for="MMO" class="side-label">MMO</label>
        </li>
        <li>
          <input id="RPG" name="RPG" type="checkbox">
          <label for="RPG" class="side-label">RPG</label>
        </li>
        <li>
          <input id="Shooter" name="Shooter" type="checkbox">
          <label for="Shooter" class="side-label">Shooter</label>
        </li>
      </div>
    </ul>
  </section>
</div>

【问题讨论】:

【参考方案1】:

您的选择器错误。应该是:

input#no-game:checked ~ #gametype 

【讨论】:

【参考方案2】:

这是因为 ~ 选择器只匹配它的兄弟姐妹 以纯 css 方式进行,我建议将游戏类型元素作为输入的兄弟

input[type=checkbox]#no-game:checked ~ #gametype 
  display: none;
<div class="container">
  <section>
    <h3>Worauf spielst du:</h3> 
    
           
            <input id="PC" name="PC" type="checkbox">
            <label for="PC" class="side-label">PC</label>
       
            <input id="Xbox" name="Xbox" type="checkbox">
            <label for="Xbox" class="side-label">Xbox</label>
            
            
             <input id="no-game" name="no-game" type="checkbox" checked>
            <label for="no-game" class="side-label">nichts</label>
            
     
            
    
        <div id="gametype" class="gametype">
            <h3>Was spielst du:</h3> 
                <li> 
                    <input id="MMO" name="MMO" type="checkbox">
                    <label for="MMO" class="side-label">MMO</label>
                </li>
                <li> 
                    <input id="RPG" name="RPG" type="checkbox">
                    <label for="RPG" class="side-label">RPG</label>
                </li>
                <li>  
                    <input id="Shooter" name="Shooter" type="checkbox">
                    <label for="Shooter" class="side-label">Shooter</label>
                </li>
        </div>

  </section>
</div>

【讨论】:

是的,我知道如果我删除列表样式它运行良好,但它有一种使用列表样式的方法 它会使用 js ,但您也可以将输入字段用作列表样式.. 使用纯 css 好的,谢谢 :) 一些用户屏蔽了 js,所以使用它是个问题^^【参考方案3】:

实际上你错过了复选框文本的双引号

input[type="checkbox"]#no-game:checked ~ #gametype  
    display: none;

【讨论】:

以上是关于复选框隐藏黑客的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏 ACF 中灵活内容框中的复选框但不隐藏其他复选框

验证隐藏的多复选框/输入字段

如何在 Web 表单中使用 javascript 隐藏复选框和复选框文本

选中复选框时显示隐藏字段?

你是否可以检查一个隐藏的复选框,如果它也是隐藏的直接父项?

jQuery为啥更改文本隐藏复选框?