<ul id="menu-content" class="menu-content collapse in">
<li id="parent-menu" data-toggle="collapse" data-target="#<?= $model->idmain ?>" class="collapsed">
<a href="?r=catalog/category&route=<?= $model->idmain ?>">
<?= $model->main_category_name ?>
</a>
<span class="arrow"></span>
</li>
<ul class="sub-menu collapse" id="<?= $model->idmain ?>">
<!-- wanna change this -->
<li data-toggle="collapse" data-target="#abc<?= $modelsub->idsubcategory ?>">
<a href="?r=catalog/sub-category&route=<?= $model->idmain ?>&routes=<?= $modelsub->idsubcategory ?>">
sub_category_name ?>
</a>
<span class="arrow"></span>
</li>
</ul>
<ul class="sub-menu collapse" id="abc<?= $modelsub->idsubcategory ?>">
<li>
<!-- im here -->
<a href="?r=catalog/det-category&route=<?= $model->idmain ?>&routes=<?= $modelsub->idsubcategory ?>&router=<?= $modeldet->iddetail ?>"></a>
</li>
</ul>
</ul>
var loc = window.location.href;
$("#menu-content li a").each(function () {
var status = loc.indexOf($(this).attr("href")) > -1;
if (status) {
$(this).closest("li").addClass("active");
$(this).closest("ul").addClass( "in" );
$(this).closest(".sub-menu").prev(".sub-menu").addClass( "in" );
}
});
我想到达那里(我的代码中输入的评论)。我试过.parent().find
,但它没有用。我查看另一页并没有工作。
谢谢你的时间。
答案 0 :(得分:1)
使用.prev()或.closest()而不使用ID或className永远不是一个好主意。原因是您的DOM最终可能会发生变化,而.prev()或.closest()位置中的标记不再映射到您正在寻找的<UL>
标记。
然而,你可以走上DOM&amp;然后沿着DOM走下去寻找你正在寻找的东西。因此,只要DOM发生变化,您的代码仍会定位到相同的<UL>
标记。
$(this).parents('.menu-content').find('.sub-menu')
这对于仅定位1个标记更有效,因为祖先链中可能存在多个嵌套的.sub-menu类名。但是,必须使用nearest()和prev()函数。否则,代码不会起作用。最近的()函数不能单独使用。请参阅此更新的jsfiddle示例,该示例显示它们可以一起使用。
$(this).closest("ul").prev("#<?= $model->idmain ?>");
答案 1 :(得分:0)
.closest()
:
$(this).closest('ul');
答案 2 :(得分:0)
我认为你想要$(this).parent().parent().prev();
,因为在这种情况下你的this
指的是锚。如果您希望获得<li>
下的<!-- wanna change this -->
,那么您需要以下内容:
$(this).parent().parent().prev().find('li').first();