Javascript JQuery在多个div之间切换
我正在尝试在div之间切换,以便在单击标记时显示div。 单击另一个a标记时,div将替换显示的div 这就是我所做的 HTML: 这目前是可行的,但我知道这可以做得更好,而不是使用if语句 谢谢我们开始吧: 您的整个功能变成:Javascript JQuery在多个div之间切换,javascript,jquery,Javascript,Jquery,我正在尝试在div之间切换,以便在单击标记时显示div。 单击另一个a标记时,div将替换显示的div 这就是我所做的 HTML: 这目前是可行的,但我知道这可以做得更好,而不是使用if语句 谢谢我们开始吧: 您的整个功能变成: $.fn.showHide = function (options) { //default vars for the plugin var defaults = { speed: 1000, easing: '',
$.fn.showHide = function (options) {
//default vars for the plugin
var defaults = {
speed: 1000,
easing: '',
changeText: 0,
showText: 'Show',
hideText: 'Hide',
slideDiv: '.slide-div'
};
var options = $.extend(defaults, options);
return this.each(function () {
$(this).click(function () {
$(options.slideDiv).hide();
// this var stores which button you've clicked
var toggleClick = $(this),
toggleDiv = $(this).data('slide-id');
// here we toggle show/hide the correct div at the right speed and using which easing effect
$(toggleDiv).slideToggle(options.speed, options.easing, function () {
// this only fires once the animation is completed
// if(options.changeText==0){
//$(toggleDiv).is(":visible") ? toggleClick.text(options.hideText) : toggleClick.text(options.showText);
//}
});
});
});
};
然后你可以这样使用它:
$('a').showHide({'slideDiv' : '.slide-div'});
$(this).click(function(){
$(this).removeClass('hidden')
$('div:not(#' + $(this).attr('id') + ')').addClass('hidden')
});
slideDiv
选项可以是您正在使用的自定义选择器,也可以是您希望滑动的div
所有幻灯片都指定了一个类,这意味着您可以一次隐藏所有幻灯片。然后,您可以通过获取单击链接的数据幻灯片id
属性来显示目标div
。我们开始:
您的整个功能变成:
$.fn.showHide = function (options) {
//default vars for the plugin
var defaults = {
speed: 1000,
easing: '',
changeText: 0,
showText: 'Show',
hideText: 'Hide',
slideDiv: '.slide-div'
};
var options = $.extend(defaults, options);
return this.each(function () {
$(this).click(function () {
$(options.slideDiv).hide();
// this var stores which button you've clicked
var toggleClick = $(this),
toggleDiv = $(this).data('slide-id');
// here we toggle show/hide the correct div at the right speed and using which easing effect
$(toggleDiv).slideToggle(options.speed, options.easing, function () {
// this only fires once the animation is completed
// if(options.changeText==0){
//$(toggleDiv).is(":visible") ? toggleClick.text(options.hideText) : toggleClick.text(options.showText);
//}
});
});
});
};
然后你可以这样使用它:
$('a').showHide({'slideDiv' : '.slide-div'});
$(this).click(function(){
$(this).removeClass('hidden')
$('div:not(#' + $(this).attr('id') + ')').addClass('hidden')
});
slideDiv
选项可以是您正在使用的自定义选择器,也可以是您希望滑动的div
所有幻灯片都指定了一个类,这意味着您可以一次隐藏所有幻灯片。然后,您可以通过获取单击链接的
数据幻灯片id
属性来显示目标div
。通常,我通过创建隐藏类来实现这一点。当您切换到新div时,可以执行以下操作:
$('a').showHide({'slideDiv' : '.slide-div'});
$(this).click(function(){
$(this).removeClass('hidden')
$('div:not(#' + $(this).attr('id') + ')').addClass('hidden')
});
这将使用not
选择器查找除当前项目以外的所有项目。无动画,这是一种简单的方法。您还可以通过使用$('div:not(.hidden)
获取未隐藏的内容,然后在选择器中的所有内容上运行切换
$(this).click(function(){
if($(this).hasClass('hidden'){
$(this).show()
$(this).removeClass('hidden')
}
$('div:not(#' + $(this).attr('id') + ') :not(.hidden.)')
.hide().addClass('hidden')
});
可能有助于清理一些东西。通常,我通过创建一个隐藏的类来实现这一点。当您切换到新div时,可以执行以下操作:
$('a').showHide({'slideDiv' : '.slide-div'});
$(this).click(function(){
$(this).removeClass('hidden')
$('div:not(#' + $(this).attr('id') + ')').addClass('hidden')
});
这将使用not
选择器查找除当前项目以外的所有项目。无动画,这是一种简单的方法。您还可以通过使用$('div:not(.hidden)
获取未隐藏的内容,然后在选择器中的所有内容上运行切换
$(this).click(function(){
if($(this).hasClass('hidden'){
$(this).show()
$(this).removeClass('hidden')
}
$('div:not(#' + $(this).attr('id') + ') :not(.hidden.)')
.hide().addClass('hidden')
});
可能有助于清理一些东西。您还可以去掉所有编号的ID,并使用元素的索引+一个公共类。这个问题更适合使用类!节省你大量的时间!这就是我的观点。。。我想去掉if语句。我知道有一个最好的办法。。我在搜索JSFIDLE时发现:但对我来说,它不起作用。你也可以去掉所有编号的ID,使用元素的索引+一个公共类。这个问题更适合使用类!节省你大量的时间!这就是我的观点。。。我想去掉if语句。我知道有一个最好的办法。。我在JSFIDLE中搜索发现:但对我来说,它不起作用。我一定做错了什么。它们在彼此下面。请确保您查看JSFIDLE链接并更新html,使其看起来像我的html。@Joe您可能应该确保插件处理应用于多组元素。事实上,它作为插件有点无用,因为它只能使用一次。您可以在divs上放置一个数据幻灯片组
属性,并将该组名称作为插件选项传递。@plalx-非常好!我只是偶然发现了我的答案并更新了它。现在您可以定义一个自定义选择器用于滑动div,它还支持链接。不起作用。我一定做错了什么。它们在彼此下面。请确保您查看JSFIDLE链接并更新html,使其看起来像我的html。@Joe您可能应该确保插件处理应用于多组元素。事实上,它作为插件有点无用,因为它只能使用一次。您可以在divs上放置一个数据幻灯片组
属性,并将该组名称作为插件选项传递。@plalx-非常好!我只是偶然发现了我的答案并更新了它。现在您可以定义用于滑动div的自定义选择器,它还支持链接。