【发布时间】:2017-11-22 16:47:37
【问题描述】:
我正在尝试想出一个很好的解决方案来轻松添加菜单页面。 每个菜单页面都应该是一个带有“shTab”类的 div,以标识它是一个显示/隐藏元素,我还想给每个 div 一个唯一的名称,这样我就可以创建具有该名称的按钮作为文本。
我正在使用硬编码的 html 创建每个 div,我想要一个 jQuery 函数首先获取所有 div,然后将其放入我的数组选项卡中。
然后我想遍历 tabs 数组,并为每个 div 创建一个按钮,该按钮应附加到 buttonContainer 类,以便所有按钮都像普通菜单一样位于同一区域。
我还希望为每个创建的按钮创建一个单击功能,该功能将 .hide() 所有选项卡,最后 .show() 属于单击按钮的选项卡。
我试图让它在jsFiddle 中工作,但我在尝试迭代它们时遇到了我的 div 元素的问题(我认为这就是问题所在)。
html
<div class='buttonContainer'>
</div>
<div class='container'>
<div class='shTab' name='home'>
<p>Homepage! yay</p>
</div>
<div class='shTab' name='contact'>
<p>Contact page! yay</p>
</div>
<div class='shTab' name='images'>
<p>no images yet :(</p>
</div>
</div>
javaScript
var tabs = [];
$(document).ready(function(){
$('div.shTab').each(function(i, obj) {
tabs.push(obj);
});
for (var div in tabs) {
div.hide();
$('.buttonContainer').append(
$('<button/>', {
text: div.name,
click: function () {
for (var div in tabs) {
div.hide();
}
this.show();
}
})
);
}
});
我注意到我的 for 循环中的 'div' 对象不能作为 jQuery 对象工作,.hide()、.name .... 等不能按我的意图工作。
我做错了什么?
【问题讨论】:
-
我创建了一个小提琴(jsfiddle.net/yxg3w9u8)......也许它会有所帮助。但请注意,我不喜欢查询,所以我只使用了 JavaScript。
-
谢谢,我修改了你的代码,现在它几乎可以满足我的需求。 (jsfiddle.net/yxg3w9u8/2) 仍然更喜欢 jQuery 版本。但是……这总比没有好!谢谢^^
标签: javascript jquery html