Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery在多个div之间切换_Javascript_Jquery - Fatal编程技术网

Javascript JQuery在多个div之间切换

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: '',

我正在尝试在div之间切换,以便在单击标记时显示div。 单击另一个a标记时,div将替换显示的div

这就是我所做的

HTML:

这目前是可行的,但我知道这可以做得更好,而不是使用if语句

谢谢

我们开始吧:

您的整个功能变成:

$.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的自定义选择器,它还支持链接。