一个简单的显示或隐藏item.text按钮

时间:2016-11-10 21:45:08

标签: c# jquery list asp.net-mvc-5 show-hide

我有一个使用数据库的mvc 5项目。 在我的项目中,我有一个博客页面。使用控制器加载此页面。 在页面中,我使用简单的@foreach(集合中的var项)动态创建项目列表(blogitems)。 每个项目都有一个id(偏离课程),标题和描述。

    @foreach (var item in Model.VmBlogItems)
    {
        <div class="allblogs">
            <div class="blogtitle">
                <h4>@item.Title</h4>
            </div>
            <div id="allblogcontent">
                @item.Description
            </div>
            <a id="moreless" href="">Lees meer</a>

        </div>
    }

我现在的问题是如何创建一个按钮,以便在点击它时隐藏或显示描述。

我还写了一些jquery:

<script type="text/javascript">
    //when ready
    $(function () {
        $('#allblogcontent').hide();

        $('#moreless').click(function () {
            $('#allblogcontent').toggle();
        });
    });
</script>

但是,当我尝试此操作时,我的所有项目都会显示或隐藏描述。

有人知道我如何确保只显示或隐藏所选项目的描述?我只花了6个小时阅读,尝试并且遗憾地未能使它工作。我可以使用一些帮助。

2 个答案:

答案 0 :(得分:2)

首先修改标记,以便每个描述标记都附加一个唯一的ID,相应的按钮具有对该id的引用

@{
   int i=0;
}
@foreach (var item in Model.VmBlogItems)
{
    i++;

    <div class="allblogs">
        <div class="blogtitle">
            <h4>@item.Title</h4>
        </div>
        <div id="allblogcontent@i" class='someclass'>
            @item.Description
        </div>
        <a id="moreless" href="" data-desc-id='allblogcontent@i'>Lees meer</a>

    </div>

}

您的代码可以确定哪个是现在。

<script type="text/javascript">
    //when ready
     $(function () {
        $('.someclass').hide();

        $('#moreless').click(function () {
            $('#' + $(this).attr('data-desc-id')).toggle();
        });
    });
</script>

脚注

此方法将在标记之间进行静态引用,因此您可以根据需要移动标记。到目前为止,此处显示的其他两个解决方案将在您更改标记的顺序时中断。

答案 1 :(得分:0)

只需更改以下部分

即可
$('#moreless').click(function () {
    $('#allblogcontent').toggle();
});

$('#moreless').click(function () {
    $(this).siblings('#allblogcontent').toggle();
});