获取/更改包含其他元素的元素的类.JavaScript/JQuery
Getting/changing class of an element with other elements in it. JavaScript/JQuery
我制作了一个博客档案,格式如下:
+Year
+Month
Title
样本代码:
<ul>
<span class="toggle">+</span>
<li class="year">$year
<ul>
<span class="toggle">+</span>
<li class="month active">$month
<ul>
<li class="title active">$title</li>
</ul>
</li>
</ul>
</li>
</ul>
我使用了$(this).next().toggle()
,它可以很好地切换列表,但当页面加载时,整个列表会在开始时展开,我不希望这样。
所以我改为更改类名(活动/非活动)。我想将月份/标题列表的类更改为非活动,并在单击+span时返回。问题是使用$(this).next()不起作用。
如果我尝试$(this).next().hasClass("active");
它将返回一个false。或者console.log($(this).next().attr("class"));
,它给出未定义的。
$(this).next().html();
给出:
<li class="month active"><span class="toggle">+</span><ul><li class="title active">...</li></ul></li></ul></li></ul>
+span后面的下一件事是class为active的列表,但它不识别class?我不明白为什么.thoggle()有效,但这不行。
我有什么选择可以让它发挥作用?
我们的想法是捕获span类上的点击事件,并在年份上切换活动/非活动,以便正确显示。这里有一些伪代码:
$('.toggle').on('click', function(){
$(this).next().toggleClass('active').toggleClass('inactive');
});
只有当元素在页面加载时具有inactive
类时,这才会起作用,如下所示:
<ul>
<span class="toggle">+</span>
<li class="year inactive">$year
<ul>
<span class="toggle">+</span>
<li class="month active">$month
<ul>
<li class="title active">$title</li>
</ul>
</li>
</ul>
</li>
</ul>
当您的初始切换工作,但它显示加载的项目时,您可以将下一个元素(无序列表)设置为
style="display: none"
对于
console.log($(this).next().attr("class");
您缺少一个括号:
console.log( $(this).next().attr("class") );
希望这能有所帮助。
通过使用一点CSS并将ul
的类切换为仅在单击时激活,可以解决您的问题。下面是一个工作示例。
$('.toggle').on('click', function() {
$(this).parent().toggleClass('active');
});
ul {
list-style-type: none;
}
ul:not(#MainNode) {
display: none;
}
ul.active > li > ul {
display: block !important;
}
.toggle {
cursor: pointer
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="MainNode">
<span class="toggle">+</span>
<li class="year">Year
<ul>
<span class="toggle">+</span>
<li class="month active">Month
<ul>
<li class="title active">Title</li>
</ul>
</li>
</ul>
</li>
</ul>
相关文章:
- 可以't附加html元素jquery
- 循环遍历元素jquery选择器
- 在ajax加载的元素jquery上包含现有的jquery函数
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 获取单击的类元素 jQuery 的名称值
- 获取上一个元素 jQuery 的内容
- 根据另一个元素的更改获取一个元素(jquery)
- 区分不同的可拖放元素(jQuery 拖放)
- 除了最后一个<td>元素-Jquery
- 获取子元素jQuery的单选按钮值
- 捕获元素jquery外部的mousedown事件
- .append到非DOM元素jQuery
- 获取其父元素的精确子元素.Jquery
- 获取重复结构中的特定元素jquery
- 捕获隐藏输入元素jQuery的值
- 使用onclick函数获取点击的元素jquery
- 返回父元素 jquery 中的输入值
- 按属性查找元素 jQuery
- 选择元素 jQuery
- 按子元素 - jQuery 的数据 ID 对 li 进行排序