【发布时间】:2017-02-02 00:14:49
【问题描述】:
我正在尝试构建一个侧边导航栏,其中列出了类别,单击类别后,相应的子类别子列表会显示在该类别的正下方。如果再次点击该类别,子列表会收缩。
所以我正在跨类别对象运行一个循环。在这个外部循环中,我包含一个用于列出子类别的内部循环和一个隐藏子菜单并仅在单击类别时才进行滑动切换的脚本。我正在使用 django 模板标签为我的 html 元素动态分配类名,并在脚本中引用它们。所以毕竟 for 循环迭代,有一个子类别列表和每个类别的专用脚本,它们具有唯一的类名,因此没有重叠的机会。所以奇怪的是,这对大多数类别都非常有效,但有些类别及其子菜单仍然打开,当点击该类别时,页面会重新加载。
我不明白,什么会导致完全相同的代码(在 for 循环中运行)表现如此不同?
这是我的代码:
{% load staticfiles %}
{% load i18n pybb_tags forumindexlistbycat %}
{% catindexlist as catindexlisted %}
{% block body %}<div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 body-container leftsidenavigator" style="margin-top:15px;">
<div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 leftsidenavigator-inner" style="padding:0px;">
<h2><center>Categories</center></h2>
<ul class="catindexlist catlistcat nav-collapse89">
{% for category in catindexlisted %}
<li class="catindexlistitem category-name{{category.name}}{{category.name}}" style="font-weight:600;padding-right:20px;"><a href="">{{category.name}}</a></li>
<ul style="padding:0px;" class="nav-collapse88">
{% for forum in category|forumindexlistbycat %}
<li class="catlistforum{{category.name}}{{category.name}} forum-name" style="padding-right:10px;"><a href="{{ forum.get_absolute_url }}">{{forum.name}}</a></li>
{% endfor %}</ul><script>
$(function() {
$(".catlistforum{{category.name}}{{category.name}}").hide();
$(".category-name{{category.name}}{{category.name}} a").click(function(e) {
e.preventDefault();
$(".catlistforum{{category.name}}{{category.name}}").slideToggle();
if(!($(this).parent('li').siblings('div').children('ul').children('div').is(":visible"))){
$(this).parent('li').siblings('div').children('ul').children('div').is(":visible").slideToggle();
}});
})
</script>
{% endfor %}
</ul>
</div>
</div>
{% endblock %}
{% block theme_script %}<script src="{% static "pinax/js/theme.js" %}"></script>{% endblock %}
【问题讨论】:
-
能否提供一个最小的代码示例?
-
请提供您的 HTML 代码
-
无效类别名称中的任何模式?也许是空格,而不是英文字符?请注意,您需要确保它是在这里使用的有效字符串,例如
$(".catlistforum{{category.name}}{{category.name}}").我觉得你应该用PK代替名字。 -
请提供产生的 HTML 代码示例,或可以看到此效果的页面的链接。正如@trinchet 所说,可能存在导致选择器/类名冲突(或名称包含无效字符,或为空等)的模式。
标签: javascript jquery python django django-templates