如何获得先前的<光>当li's被包裹在<ol>

How to get previous <li> when the li's are wrapped inside <ol>?

本文关键字:包裹 ol li 何获得      更新时间:2023-09-26

如何获得前一个li当它被包装在一个ol?

我使用了下面的脚本,但它似乎不起作用:

<script type="text/javascript">
$(document).ready(function () {
    $(".categoryitem").click(function () {
        alert("hihi");
        $(this).parent().prev("li").css('background-color', 'red');
        $(this).prev("li").css('background-color', 'red');       
    });
});
</script>

这就是HTML的样子(在我的实际应用程序中,我已经在每个li上设置了类名,但在这个例子中没有这样做)

<ul>
<li>
<a href="">Item 1</a>
</li>
<ol>
<li>
<a href="">Item 1.1</a>
</li>
</ol>
<li>
<a href="">Item 2</a>
</li>
<ol>
<li>
<a href="">Item 2.1</a>
</li>
<ol>
<li>
<a href="">Item 2.1.1</a>
</li>
</ol>
<ol>
<li>
<a href="">Item 2.1.2</a>
</li>
</ol>
<ol>
<li>
<a href="">Item 2.1.3</a>
</li>
</ol>
<ol>
<li>
<a href="">Item 2.1.4</a>
</li>
</ol>
</ol>
</ul>

当我点击Item 1.1时,父元素1变成红色当我点击项目2时,什么都没有发生,但我希望1.1变成红色当我点击2.1.1,2.1.2,2.1.3,2.1.4项时,什么都没有发生当我点击条目2.1时,父条目2变成红色

我希望所有之前的LI都变成红色,即使它们在更高的水平

我做错了什么?

是创建树的方法:编辑:我将ol改为ul,对于每个组

<ul>
@{
    foreach(var cq in Model) {
        @ShowSubItems(cq);
    }
}
</ul>
@helper ShowSubItems(MvcApplication3.Models.ViewModels.Category.AllQuestionsInCategoriesViewModel MyObj)
    {
    <li class="categoryitem" categoryid="1">@Html.ActionLink(MyObj.Category_Number + " " + MyObj.Category_Name, "DisplayQuestions", new { categoryId = MyObj.Category_ID, page = 1 })</li>

        if (MyObj.SubCategories != null && MyObj.SubCategories.Count != 0)
        {
<ul>
            @foreach (var subitem in MyObj.SubCategories)
            {
            @ShowSubItems(subitem)
            }
</ul>
        }
}
</ul>

要获得最近的PARENT,您可以简单地使用.close ()

<ul>
    <li>
        <a href="javascript:void(0);" class="clickme">Click Me!</a>
    </li>
</ul>
$(document).ready(function() {
    $('a.clickme').click(function() {
        $(this).closest('li').css('background-color', 'red');
    });
});

下面是这个例子的jsfiddle源代码:http://jsfiddle.net/y36qg/