jquery - 在 div 单击时切换动态创建的表

标签 jquery html css razor

我有一个 View ,其中与表关联的 div 和表是动态创建的。我尝试使用 Jquery 来隐藏/显示 div,但只有第一个表被切换。我见过在表格行而不是整个表格上应用切换的示例。

HTML

<div class="col-md-10" id="main">
@foreach (var item in Model)
{ 
    <div id="ConfigName">
        <h3><b>@item.ConfigurationCollection.CollectionName</b></h3>
    </div>
    <div id="ConfigDetails" style="display:none">
    <table class="table">
        <tr>
            @foreach (var lis in item.ListConfiguration)
            {
                <th>@lis.Option.OptionName</th>
            }
        </tr>
        <tr>
            @foreach (var lis in item.ListConfiguration)
            {
                <td>
                    @foreach (var ov in lis.OptionValue)
                    {
                        @ov.OptionVal
                        <br />
                    }
                </td>
            }
        </tr>
    </table>            
    </div>
}

脚本(评论包括我尝试过的所有内容)

<script type="text/javascript">
$(document).ready(function () {
    $('#ConfigName').click(function () {
        //$('#ConfigDetails').slideToggle();
        //$(this).parent().find('#ConfigDetails').slideToggle();
        var closest = $(this).closest().find('#ConfigDetails').is(":visible");
        if(!closest)
        {
            $(this).find('$ConfigDetails').slideToggle();
        }

    });
});
</script>

最佳答案

有多个问题,

  1. ID 应该是唯一的。您有多个具有相同 ID 的元素。您需要将其替换为类
  2. .find('$ConfigDetails'),在这一行中你需要使用.而不是$(类选择器)。

那么你的最终代码将是,

 $('.ConfigName').click(function () {
     $(this).next().slideToggle();
 });

注意:你应该把所有的id都改成类名,包括“configName”

关于jquery - 在 div 单击时切换动态创建的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565180/

相关文章:

使用 "this"的 JavaScript 对象

javascript $ 后跟大括号

html - 有时 DIV 就像梯子一样

javascript - 计算html元素并除以100

javascript - 无论如何都会出现具有 "display: none"样式的 Div

jquery - 手动调整大小和拖动 bootstrap 3 modals

php - 协调显示/隐藏 JQuery 脚本到 PHP

javascript - window.addEventListener 中的延迟

html - 副行文字流入数字列<ol>有序列表

css - 创建 CSS 布局