我将以下函数绑定到我创建的切换按钮,以隐藏/取消隐藏位于按钮下方但在 DOM 中的另一个级别的内容。
var togglelabel = packagehead.append("<div>").children().last().addClass("togglewrap").append("<label>")
.children().last().addClass("toggle android header-toggle")
.on('click', function(){
$(this).parent().parent().next('.hidable').toggle();
});
html结构如下所示:
<div>
<div class="packageheader">
<span>Package #1501</span>
<div class="togglewrap">
<label class="toggle android header-toggle">
<input type="checkbox">
<p>
<span>More</span>
<span>Less</span>
</p>
<a class="slide-button">
</a>
</label>
</div>
</div>
<br>
<p class="hidable">
<pre>content here</pre>
</p>
</div>
此代码无法<p>
使用 class隐藏.hidable
。我尝试使用 console.log() 来“调试”代码以查看“this”代表什么元素,并发现它确实代表了标签元素。
所以我认为使用以下链:
$(this).parent().parent().next('.hidable').toggle();
将正确地升到 2 级<div class="packageheader">
,然后采用可隐藏类的下一个兄弟,这将是<p class="hidable">
这是结构的屏幕截图,以确保我没有遗漏任何内容: