我想在一个页面上添加三个切换功能(所有功能都相同)。
我的JavaScript代码:
<script type="text/javascript">
$(document).ready( function() {
$('.toggle_container').hide();
$('.trigger').click( function() {
var trig = $(this);
if ( trig.hasClass('trigger_active') ) {
trig.next('.toggle_container').slideToggle('slow');
trig.removeClass('trigger_active');
}
else {
$('.trigger_active').next('.toggle_container').slideToggle('slow');
$('.trigger_active').removeClass('trigger_active');
trig.next('.toggle_container').slideToggle('slow');
trig.addClass('trigger_active');
};
return false;
});
});
</script>
这是我的HTML代码:
<div id="tourteaser">
<div id="tourteaser_teaser" class="erster">
<span class="zahlen">1</span>
<h3>headline</h3>
<p>Erstelle deine persönliche Visitenkarte und zeige deine Kunst!</p>
<a class="trigger" href="" onfocus="this.blur();"></a>
<div class="toggle_container">
<div class="trenner"></div>
<div class="tourinfos"></div>
</div>
</div>
<div id="tourteaser_teaser" class="mitte">
<span class="zahlen">2</span>
<h3>headline</h3>
<p>Erstelle deine persönliche Visitenkarte und zeige deine Kunst!</p>
<a class="trigger" href="" onfocus="this.blur();"></a>
<div class="toggle_container">
<div class="trenner"></div>
<div class="tourinfos"></div>
</div>
</div>
<div id="tourteaser_teaser" class="letzter">
<span class="zahlen">3</span>
<h3>headline</h3>
<p>Erstelle deine persönliche Visitenkarte und zeige deine Kunst!</p>
<a class="trigger" href="" onfocus="this.blur();"></a>
<div class="toggle_container">
<div class="trenner"></div>
<div class="tourinfos"></div>
</div>
</div>
</div>
到目前为止:只有一个(第一个)切换对此功能作出反应。如何让所有三个单独工作?如果在单击另一个切换时关闭一个切换也可以。这很容易吗?
编辑:我上传了一个我网站的例子,因为我无法获得SpYk3HH的例子与我合作。请参阅:http://www.brayaz.de/example/example.html答案 0 :(得分:1)
你有一个设计缺陷,但我得到了以下工作;
的 JS 强> 的
$(function(){
$('.toggle_container').hide();
$('.trigger').on("click", function(e) {
$(this).toggleClass("trigger_active").next('.toggle_container').slideToggle('slow');
});
});
HTML更改
<a class="trigger" href="" onfocus="this.blur();"></a>
到
<a class="trigger" href="javascript:void(0);" onfocus="this.blur();"></a>
<强>更新强>
实测值的一个主要问题,首先,它不是一个好主意,得到多个元件的ID相同,考虑改变<div id="tourteaser_teaser"
为类似<div id="tourteaser_teaser-x"
,其中,x是该元素的索引号。其次,我看到你是为了CSS的目的而做的,在这种情况下你要给它们所有相同的CLASS名称,而不是相同的ID。你可以拥有许多类名,但只有一个ID。
我认为我解决了你所有的问题,这就是我所做的:
<a href=""
上的HTML更改为<a href="javascript:void(0);"
。
return false
点击命令tourteaser_teaser
更改为tourteaser_teaser-1
,tourteaser_teaser-2
和&amp; tourteaser_teaser
tourteaser_teaser
添加到之前具有该ID的每个div position: absolute;
,因为父级是静态的,所有链接都是重叠的
position: relative;
请参阅NEW UPDATE JSFIDDLE并告诉我这是否是您要找的内容?
答案 1 :(得分:0)
这样的事情会起作用吗?
$(document).ready( function() {
$('.toggle_container').hide();
$('.trigger').click( function() {
$('.toggle_container').slideUp('slow');
$(this).next().slideToggle('slow');
return false;
});
});
答案 2 :(得分:0)
看起来你的错误就在这里:
} else {
$('.trigger_active').next('.toggle_container').slideToggle('slow');
$('.trigger_active').removeClass('trigger_active');
您正在操作所有.trigger_active元素,而不仅仅是链接后的元素。