【发布时间】:2018-05-31 05:48:15
【问题描述】:
我有一组菜单元素 <a> 和一组 div 元素(每个都包含一个 django 模板。目前有在 menu 元素之间切换“活动”类的逻辑取决于单击了哪个(突出显示单击的菜单项)。想要它以便在任何时候都只看到与“活动”菜单项对应的 django 模板。现有代码看起来像这样(它目前只更改菜单项具有“活动”类):
<!-- top menu color activation -->
<script>
menu = {};
// ready event
menu.ready = function() {
// selector cache
var
$menuItem = $('.menu a.item, .menu .item, .menu .link.item'),
// alias
handler = {
activate: function() {
$(this)
.addClass('active')
.closest('.ui.menu')
.find('.item')
.not($(this))
.removeClass('active');
}
}
;
$menuItem
.on('click', handler.activate)
;
};
// attach ready event
$(document).ready(menu.ready);
</script>
<!-- top menu (note, using semantic UI) -->
<div class="ui container">
<div class="ui large secondary red pointing menu">
<a class="toc item">
<i class="sidebar icon"></i>
</a>
<a class="active item">item-1</a>
<a class="item">item-2</a>
<a class="item">item-3</a>
<div class="right menu item">
<div class="ui simple dropdown">
More
<i class="dropdown icon"></i>
<div class="ui menu">
<a class="item"><i class="globe icon"></i> Choose Language</a>
<a class="item"><i class="settings icon"></i> Log Out</a>
</div>
</div>
</div>
</div>
</div>
<!-- including corresponding django templates (currently all visible) -->
<!-- would like only item-1.html to be visible when menu item 1 is active and similarly for the other templates here -->
<div>{% include "testapp/item-1.html" %}</div>
<div>{% include "testapp/item-2.html" %}</div>
<div>{% include "testapp/item-3.html" %}</div>
我无法弄清楚的是如何隐藏与当前活动的菜单项相对应的任何给定时间当前可见的 django 模板(例如,用户单击 item-1 菜单项,然后只有 item-1 .html django 模板应该是可见的)。
如何使用 jQuery 获得这些功能?对于前端网页内容,JS 非常新,并且希望对代码措辞中不明显的任何内容进行任何进一步的解释。
【问题讨论】:
-
您的实际问题是什么?如果代码有效并且您希望对其进行审查,您应该将其发布到Code Review
-
@LouysPatriceBessette 我已经更新了这个问题,希望能更好地反映我到底想要做什么以及问题是什么(即,是的,示例中的现有代码有效,但 sn-p 是只做了我想做的一半(另一半我不知道怎么做)。
-
我编辑了我的答案。您应该拥有所需的一切。
标签: javascript jquery html