您好我试图弄清楚如何使用多个链接隐藏和显示内容。实施例
<a href="#">Content 1</a>
<a href="#">Content 2</a>
<a href="#">Content 3</a>
<div class="show">content #1</div>
<div class="hidden">content #2</div>
<div class="hidden">content #3</div>
因此,当有人点击内容#2时,它会显示内容#2并隐藏内容#1
答案 0 :(得分:2)
你的链接和div只有最松散的挂钩来悬挂这种行为。也许你的确意味着通过序数位置将链接与它们各自的div相关联 - 但如果没有,一种方法可以通过添加一些有意义的id
来实现。所以:
<div id="linkarea">
<a href="#" id="link-1">Content 1</a>
<a href="#" id="link-2">Content 2</a>
</div>
然后
<div id="contentarea">
<div id="c-1">content #1</div>
<div id="c-2">content #2</div>
</div>
使其有效:
$('div#linkarea a').click( function(ev){
ev.preventDefault(); // suppress natural click
var idx = this.id.split('-')[1]; // grab the link "number"
$('div#contentarea div[id=c-'+idx+']') // find respective div
.show() // show it
.siblings() // get its siblings
.hide(); // and hide them
});
});
这是一个有效的fiddle。
答案 1 :(得分:1)
我会以稍微不同的方式处理这个问题。
不是在HTML中包含链接,而是使用javascript生成它们。这样,如果有人禁用了JS,那么他们就不会看到无用的链接。
<div title="Content 1">content #1</div>
<div title="Content 2">content #2</div>
<div title="Content 3">content #3</div>
然后JS:
var $divs = $('div'); // or whatever selector is appropriate, maybe classes are needed?
var $linkDiv = $("<div></div>").insertBefore($divs);
$divs.each(function(index) {
var $t = $(this);
$("<a></a>", { href: '#', text: this.title })
.click(function(e) {
e.preventDefault();
$t.toggle('slow');
})
.appendTo($linkDiv)
;
this.removeAttribute('title'); // to avoid ugly hover tooltips
if (index > 0) $t.hide();
});
答案 2 :(得分:-1)