繁体   English   中英

jQuery Click事件未循环。 它只工作第一次

[英]jQuery Click event is not looping. It's working only first fire

我试图制作一个图库,其中的按钮上显示“查看所有照片”,方法是单击该框,隐藏的照片将扩展,按钮文本将变为“隐藏所有照片”。

然后,在单击“隐藏所有照片”之后,展开的图像将正确折叠,并且按钮文本将变为“查看所有照片”。 其实我想做这个。

但是问题是它只能工作一次。 当我第二次尝试单击“查看所有照片”时,隐藏区域没有扩大,按钮文本也没有改变。

$(document).ready(function() {

            //Gallery Show all photos
            $('.trigger-details > button').click(function(){
                $('.single-gallery-image.hidden-lg').removeClass('hidden-lg').addClass('gallery-expanded');
                $(this).addClass('hide-button').text('Hide All Photos');

                $('.hide-button').click(function(){
                    $('.gallery-expanded').removeClass('gallery-expanded').addClass('hidden-lg');
                    $(this).removeClass('hide-button').text('View All Photos');
                });
            });

        });

$('.hide-button').click()是用于将事件委派给DOM元素的工具。

然后,在该语句的内部执行$(this).removeClass('hide-button')

因此,它将丢失其类,并且由于第一个事件仅被委托/调用了一次,因此您无法再次附加它。 最好有一个控制两个状态的事件(不像这里那样嵌套)。

$('.trigger-details > button').click(function(){
    if ($(this).hasClass('hide-button')) {
        // do your showing logic
    } else {
        // do  your hiding logic
    }
});

尝试将点击事件设置在文档级别,而不是嵌套在第一次点击中

$(document).on('click','.trigger-details > button', function(){
    $('.single-gallery-image.hidden-lg').removeClass('hidden-lg').addClass('gallery-expanded');
    $(this).addClass('hide-button').text('Hide All Photos');
});
$(document).on('click','.hide-button', function(){
    $('.gallery-expanded').removeClass('gallery-expanded').addClass('hidden-lg');
    $(this).removeClass('hide-button').text('View All Photos');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM