打开另一个时关闭 jQuery slideToggle + 切换 class
Closing jQuery slideToggle + toggling class when opening another
我试图让一个开关在打开另一个时关闭。我将在多个页面上展示其中的许多内容,因此我宁愿不必为每个页面都重复此代码。
此外,我无法使用 .next();或任何类似的内容,因为点击时将打开的某些内容 div 不在切换 link 的正下方。这就是为什么我将 rel 属性分配给一个变量,这样我就可以为每个 link 赋予一个唯一的 rel,然后一个按钮应该打开一个特定的 div,无论它在页面上的什么位置。
fiddle中的代码使用了hide();在它执行之前在所有 div 上,但由于某种原因,当我这样做时 class "remove-border" 不能可靠地工作。您可以看到,如果多次单击同一个项目,边框会出现和消失。这应该会产生标签效果,因此当单击 link 时边框消失并重新出现是必不可少的。我使用了 toggleClass,因为当单击不同的 link 时需要重新添加边框。
总而言之:单击项目 1 会删除项目 1 下的底部边框并打开 div 和 class "toggle-content1"。再次单击它,它会关闭并替换边框,或者如果您单击 ITEM2,它会替换 ITEM1 下方的边框并关闭它,然后打开 ITEM2,从 ITEM2 下方移除边框。
这是我的 jQuery:
jQuery(document).ready(function($){
$( ".toggle-button" ).click(function() {
var rel = $(this).attr('rel');
$(".hh").hide();
$(this).addClass("remove-border");
$( ".toggle-content" + rel ).slideToggle( 50, function() {
});
});
});
Here's my fiddle of what I've got so far。我的处理方式是否正确?
使用可以使用下面的代码:) :
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.toggle-button').next('.hh').slideUp();
$('.toggle-button').removeClass("remove-border");
var rel = $(this).next('.hh');
$(this).addClass("remove-border");
rel.slideDown();
});
});
});
工作fiddle:
http://jsfiddle.net/ohLdee2g/1/
这个是你创建的 rel
属性:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp();
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
$('.toggle-content'+rel).slideDown();
$(this).addClass('remove-border');
});
});
});
jsfiddle :
http://jsfiddle.net/ohLdee2g/2/
全力以赴:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp();
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
if($('.toggle-content'+rel).is(':visible')){
$('.toggle-content'+rel).slideUp();
} else {
$('.toggle-content'+rel).slideDown();
}
$(this).addClass('remove-border');
});
});
});
jsfiddle:
http://jsfiddle.net/ohLdee2g/3/
最后一个:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp('fast');
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
if($('.toggle-content'+rel).is(':visible')){
$('.toggle-content'+rel).slideUp('fast');
$('.toggle-button').removeClass('remove-border');
} else {
$('.toggle-content'+rel).slideDown('fast');
$(this).addClass('remove-border');
}
});
});
});
我试图让一个开关在打开另一个时关闭。我将在多个页面上展示其中的许多内容,因此我宁愿不必为每个页面都重复此代码。
此外,我无法使用 .next();或任何类似的内容,因为点击时将打开的某些内容 div 不在切换 link 的正下方。这就是为什么我将 rel 属性分配给一个变量,这样我就可以为每个 link 赋予一个唯一的 rel,然后一个按钮应该打开一个特定的 div,无论它在页面上的什么位置。
fiddle中的代码使用了hide();在它执行之前在所有 div 上,但由于某种原因,当我这样做时 class "remove-border" 不能可靠地工作。您可以看到,如果多次单击同一个项目,边框会出现和消失。这应该会产生标签效果,因此当单击 link 时边框消失并重新出现是必不可少的。我使用了 toggleClass,因为当单击不同的 link 时需要重新添加边框。
总而言之:单击项目 1 会删除项目 1 下的底部边框并打开 div 和 class "toggle-content1"。再次单击它,它会关闭并替换边框,或者如果您单击 ITEM2,它会替换 ITEM1 下方的边框并关闭它,然后打开 ITEM2,从 ITEM2 下方移除边框。
这是我的 jQuery:
jQuery(document).ready(function($){
$( ".toggle-button" ).click(function() {
var rel = $(this).attr('rel');
$(".hh").hide();
$(this).addClass("remove-border");
$( ".toggle-content" + rel ).slideToggle( 50, function() {
});
});
});
Here's my fiddle of what I've got so far。我的处理方式是否正确?
使用可以使用下面的代码:) :
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.toggle-button').next('.hh').slideUp();
$('.toggle-button').removeClass("remove-border");
var rel = $(this).next('.hh');
$(this).addClass("remove-border");
rel.slideDown();
});
});
});
工作fiddle:
http://jsfiddle.net/ohLdee2g/1/
这个是你创建的 rel
属性:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp();
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
$('.toggle-content'+rel).slideDown();
$(this).addClass('remove-border');
});
});
});
jsfiddle :
http://jsfiddle.net/ohLdee2g/2/
全力以赴:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp();
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
if($('.toggle-content'+rel).is(':visible')){
$('.toggle-content'+rel).slideUp();
} else {
$('.toggle-content'+rel).slideDown();
}
$(this).addClass('remove-border');
});
});
});
jsfiddle:
http://jsfiddle.net/ohLdee2g/3/
最后一个:
jQuery(document).ready(function($){
$( ".toggle-button" ).each(function(){
$(this).click(function() {
$('.hh').slideUp('fast');
$('.toggle-button').removeClass('remove-border');
var rel = $(this).attr('rel');
if($('.toggle-content'+rel).is(':visible')){
$('.toggle-content'+rel).slideUp('fast');
$('.toggle-button').removeClass('remove-border');
} else {
$('.toggle-content'+rel).slideDown('fast');
$(this).addClass('remove-border');
}
});
});
});