0

我的 mvc 4 项目中的 .cshtml 页面上有一个 razor 循环,我需要在这个 razor 循环中显示隐藏列表的子项。该代码适用于第一个元素,但不适用于其余元素。

.cshtml 代码

<ol>
    @foreach (var Name in (List<string>)ViewData["Names"])
    {
        <li onclick="makevisible();" ondblclick="makeinvisible();">
            @Name
            <ul id="list" class="list">
                <li>childWichNeedsToBeHidden</li>
            </ul>
        </li>
    }
</ol>

我的 javascript: function makevisible() {$('#list').show();} 和: function makeinvisible() {$('#list').hide();}

我的CSS:.list {display:none;}

编辑

我的新 .cshtml 代码

    @{
      int i = 0;
      foreach (var Name in (List<string>)ViewData["Names"])
      {
          i++;
          <li onclick="makevisible();" ondblclick="makeinvisible();">
            @Name
             <ul class="list" id="@i">
                <li>childWichNeedsToBeHidden</li>
             </ul>
          </li>
      }
    }

所以现在每个 ul 都有一个唯一的 id。但我不知道我的 javascript 应该是什么。我可以显示隐藏一个特定的孩子 ul 就像第三个孩子一样:

        function makevisible() {
            $('#3').show();
        }
        function makeinvisible() {
            $('#3').hide();
        }

如何使#3 成为变量,以便我可以显示隐藏我想要的任何孩子?

4

2 回答 2

2

你应该尝试

function makevisible() {
    $(this).find('.list').show();
}

function makeinvisible() {
    $(this).find('.list').hide();
}

您不应该在 foreach 中为 ul 使用相同的 id。

于 2013-03-20T11:52:59.293 回答
0
<ol>
    @foreach (var Name in (List<string>)ViewData["Names"])
    {
        <li class="parentLI" onclick="makevisible();" ondblclick="makeinvisible();">
            @Name
            <ul class="list">
                <li>childWichNeedsToBeHidden</li>
            </ul>
        </li>
    }
</ol>

你的脚本应该是

<script type="text/javascript">
 $(function(){

  $(".parentLI").click(function(){
    $(this).closest("ul.list").hide();
});

});
</script>

dblclick以同样的方式绑定事件

于 2013-03-20T11:53:42.133 回答