使用Jquery来改变div

时间:2012-01-05 21:30:03

标签: jquery html

更新:所以我将所有div放在一个表数据单元格下。现在,我在更改选择选项时获得了我想要的功能,但在页面加载时显示全部 div。我只是希望它在{html_options name="program" options=$programs selected=$sanction->Program}

下显示我的预选

$ sanction->程序片段带来一串预先选择的程序。它最初选择选项集上的实际选项,但该值不对应。它只显示每个 div。

PREVIOUS: 我试图隐藏我的div在jquery中显示一个div。当我从六个中选择我的一个选项时,div出现了,但你可以清楚地告诉他们在选择时他们是彼此之上的。当我做出一个选择并且只显示一个div时,我只想隐藏其他div。任何帮助将不胜感激。

这是我的代码

// JQUERY

        $("select[name=program]").change(function () {
            $("td#levelCheck div").hide();
            $("td#levelCheck div#" + $(this).val()).show();
        });

// HTML

    <table class="form" style="margin-top: 20px;">
            <tbody>
                <tr>
                    <th>Sanction Name</th>
                    <td><input type="text" name="name" size="40" maxlength="100" value="{$sanction->Name}" /></td>
                </tr>
                <tr>
                    <th style="vertical-align: top;">Select discipline type</th>
                    <td>{html_options name="program" options=$programs selected=$sanction->Program}</td>
                </tr>
                <tr id="trCheck">
                    <th></th>
                    <td id="levelCheck">
                        <div id="Rhythmic" style="width: 452px;">
                            {foreach from=$acroLevels item=level}
                                <label>
                                    <input type="checkbox" name="{$level->Code}" value="{$level->Description}" /> {$level->Description}
                                </label>
                            {/foreach}
                        </div>
                        <div id="Acro" style="width: 452px;">
                            {foreach from=$acroLevels item=level}
                                <label>
                                    <input type="checkbox" name="{$level->Code}" value="{$level->Description}" /> {$level->Description}
                                </label>
                            {/foreach}
                        </div>
                        <div id="Men" style="width: 452px;">
                            {foreach from=$mensLevels item=level}
                                <label>
                                    <input type="checkbox" name="{$level->Code}" value="{$level->Description}" /> {$level->Description}
                                </label>
                            {/foreach}
                        </div>
                        <div id="TT" style="width: 452px;">
                            {foreach from=$ttLevels item=level}
                                <label>
                                    <input type="checkbox" name="{$level->Code}" value="{$level->Description}" /> {$level->Description}
                                </label>
                            {/foreach}
                        </div>
                        <div id="Women" style="width: 452px;">
                            {foreach from=$womensLevels item=level}
                                <label>
                                    <input type="checkbox" name="{$level->Code}" value="{$level->Description}" /> {$level->Description}
                                </label>
                            {/foreach}
                        </div>
                        <div id="Group" style="display: none;">
                   </td>
                </tr>

2 个答案:

答案 0 :(得分:0)

您有多个具有相同ID的TD

<td id="levelCheck">

在这种情况下,jQuery会将使用#levelCheck的选择器仅应用于第一个匹配的元素,而不是像您期望的那样。您应该将其更改为使用类

<td class="levelCheck">

然后使用

$("td.levelCheck div")

答案 1 :(得分:0)

扔掉那张丑陋的桌子。只需将所有div放在彼此之后,将显示设置为none。 要显示的那个,将display设置为block,将所有其他设置为none。 就是这样。