javascript - 根据选择值隐藏单元格 - 生成的 HTML

标签 javascript jquery html

我在编写函数以根据所选值隐藏两个单元格时遇到问题。 最大的问题是 生成的 HTML 可能只有一个或八个这样的选择。为了让事情变得更有趣,这个选择中的每一个都放在一个单独的 div 中,当一个显示时,其他的被隐藏。

这是我用来切换单元格的函数。仅当所选值为“Z”时才能显示单元格,否则必须隐藏它们。它仅适用于第一个选择,而其他选择则完全被忽略。我试图对每个带有 id="selector" 的元素使用 .each() 函数,但是元素索引相当多,它也不起作用。

$("#selector").change(function(){
  if($(this).val().trim() == 'Z'){
      $("#labelToHide").toggle(true);
      $("#selectToHide").toggle(true);
  } else {
      $("#labelToHide").toggle(false);
      $("#selectToHide").toggle(false);
  }
});

这是工作 JSFiddle .它可能看起来不完整,但足以模拟真实情况。下面是我用来生成 HTML 的 XML 代码。

<xh:td class="RightColumn" id="selectToHide">
    <form:selectOne ...>
        <!-- form code -->
    </form:selectOne>
</xh:td>

有什么方法可以让这个脚本只对当前显示的 div 有效吗?或者还有其他解决方法吗?

最佳答案

随着 ID 的多次使用,它永远不会像您那样工作。在下文中,我已将所有 ID 更改为相关类,并修改了脚本以将其考虑在内...

HTML

<div id="divOne">
    <table class="gridtable">
        <tr>
            <td id="allwaysShown">Allways Shown</td>
            <td id="allwaysShown">
                <select class="selector">
                    <option value="Z">Z</option>
                    <option value="X">X</option>
                </select>
            </td>
            <td class="toHide">Hide this</td>
            <td class="toHide">
                <select>
                    <option value="Y">Yes</option>
                    <option value="N">No</option>
                </select>
            </td>
        </tr>
    </table>
</div>
<div id="divTwo">
    <table class="gridtable">
        <tr>
            <td id="allwaysShown">Allways Shown</td>
            <td id="allwaysShown">
                <select class="selector">
                    <option value="Z">Z</option>
                    <option value="X">X</option>
                </select>
            </td>
            <td class="toHide">Hide this</td>
            <td class="toHide">
                <select>
                    <option value="Y">Yes</option>
                    <option value="N">No</option>
                </select>
            </td>
        </tr>
    </table>
</div>

Javascript

$(".selector").change(function () {
    if ($(this).val().trim() == 'Z') {
        $(this).closest("tr").find(".toHide").show();
    } else {
        $(this).closest("tr").find(".toHide").hide();
    }
});

它现在所做的是当一个选择元素(带有 selector 类)发生变化时,它解析 DOM 以找到它所在的行,然后找到所有带有toHide 类,然后隐藏或显示它们。

Your jsfiddle, modified...

关于javascript - 根据选择值隐藏单元格 - 生成的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24798216/

相关文章:

jquery - 使用 Jquery 将内容添加到表中的 tfoot

使用 JOIN 的 PHP MySQL 选项

javascript - 调用变量中命名的 jQuery 函数

javascript - 无法从 Promise 中检索数据

jquery - 如何将类添加到jquery中当前元素数组的下一个元素?

javascript - 带有文本区域内容的警报消息

html - Firefox 单选按钮不检查?

javascript - 使用纯 javascript slider 拇指在输入 slider 上的位置

javascript - 页面刷新后 react 路由器找不到页面

javascript - 每次表更改时执行 JavaScript 代码