【问题标题】:Can't make first div shown after checkbox is checked选中复选框后无法显示第一个 div
【发布时间】:2014-06-19 05:46:21
【问题描述】:

在选中复选框时,我遇到了在复选框隐藏下面的第一个div。 基本上,该脚本有效,它隐藏了 div,但不是复选框下方的第一个。 jQ 中是否有管理此类操作的函数?

我的脚本包含:

$("div[class=content]").hide();
    $("input[type=checkbox]").click(function(){
        if($(this).is(":checked"))
        {
            $(this).siblings().show();
        }
        else
        {
            $(this).siblings().hide();
        }
    });

还有 HTML 部分:

<form action="" method="post" style="border:1; border-style:solid;">
    <input name="checkbox" id="table" type=checkbox /> a TABLE<br />
        <div class=content id="table">
            COLs <input type=text name=COLs /><br />
            ROWs <input type=text name=ROWs /><br />
            <input type=submit name=submit_table value="create table" />
        </div>
    <br/>
    <br />
    <input name="checkbox" id="image" type=checkbox /> an IMAGE<br />
        <div class=content id="image">
            Width <input type=text name=Width /><br />
            Height <input type=text name=Height /><br />
            <input type=submit name=submit_image value="see image" />
        </div>
    <br />
    <br />
    <input name="checkbox" id="text" type=checkbox /> some TEXT<br />
        <div class=content id="text">
            <input type=text name=text_string /><br />
            Color <input type=text name=Color /><br />
            Size <input type=text name=Size /><br />
            <input type=checkbox name=text_font value=bold /><strong>bold</strong> <input type=checkbox name=text_font value=italic /><i>italic</i> <input type=checkbox name=text_font value=underline /><u>underline</u><br />
            <input type=submit name=submit_text value="post text" />
        </div>
    <br />

    <input name="submit" type="submit"/>
</form>

那么,如果该怎么办呢?检查从“表”的复选框时,应可见div [ID =表],当检查“图像”复选框时,应可见div [ID = Image] ......但自动。

假设我有一千个带有某种内容的复选框,每个复选框在选中时都会显示。我绝对不想为每个人制作一个 :if: ;但在单击的复选框下方获得第一个 DIV。

希望我已经足够清楚了。那么请问,你能帮忙吗?

PS:我还希望在第一次加载页面时隐藏那些 div。

【问题讨论】:

    标签: jquery html checkbox


    【解决方案1】:

    注意:您的 HTML 标记无效,document 上下文中的 ID 必须是唯一的

    你可以使用:

    $("div[class=content]").hide(); // you should hide by default in CSS instead
    $("input[type=checkbox]").change(function () {
        $(this).nextAll('.content').first().toggle(this.checked); // this.checked could be ommited here
    });
    

    DEMO

    【讨论】:

    • 完美运行!哇!谢谢你,先生!这是尝试让这种简单的事情发挥作用的第四天。
    【解决方案2】:

    试试这个:

    $("div[class=content]").hide();
        $("input[type=checkbox]").click(function(){
            if($(this).is(":checked"))
            {
                $(this).siblings(".content").show();
            }
            else
            {
                $(this).siblings(".content").hide();
            }
        });
    

    您可能还想确保用引号括住您的 html 属性值(我注意到您的 div 的类值周围没有引号。

    将您的输入和 div 包装在父 div 中,这样就不会所有其他输入/div 都是同级的。

    <form action="" method="post" style="border:1; border-style:solid;">
        <div>
            <input name="checkbox" id="table" type=checkbox /> a TABLE<br />
            <div class=content id="table">
                COLs <input type=text name=COLs /><br />
                ROWs <input type=text name=ROWs /><br />
                <input type=submit name=submit_table value="create table" />
            </div>
        </div>
        <br/>
        <br />
        <div>
            <input name="checkbox" id="image" type=checkbox /> an IMAGE<br />
            <div class=content id="image">
                Width <input type=text name=Width /><br />
                Height <input type=text name=Height /><br />
                <input type=submit name=submit_image value="see image" />
            </div>
         </div>
        <br />
        <br />
        <div>
            <input name="checkbox" id="text" type=checkbox /> some TEXT<br />
            <div class=content id="text">
                <input type=text name=text_string /><br />
                Color <input type=text name=Color /><br />
                Size <input type=text name=Size /><br />
                <input type=checkbox name=text_font value=bold /><strong>bold</strong> <input type=checkbox name=text_font value=italic /><i>italic</i> <input type=checkbox name=text_font value=underline /><u>underline</u><br />
                <input type=submit name=submit_text value="post text" />
            </div>
         </div>
        <br />
    
        <input name="submit" type="submit"/>
    </form>
    

    【讨论】:

    • 感谢您的回复!它仍然不起作用。当一个复选框被选中时,所有的 div 都会显示出来......我不希望这样。除非给定的值包含空格、符号或类似的东西,否则属性没有引号应该是一个问题。
    • 我想我看到了这个问题,所有这些 div 实际上都是基于您的结构的复选框的兄弟姐妹。您可以将每个输入和 div 包装在父 div 中,然后它就可以工作了
    【解决方案3】:

    为什么不直接写:

    $("div.content")
    // or even
    $(".content")
    // insted of
    $("div[class=content]")
    // and
    $(":checkbox")
    // instead of
    $("input[type=checkbox]")
    // Could there be enything other than "input"?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2015-01-20
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多