jQuery 单击事件第一次触发,但第二次失败.它在页面刷新时工作



我在单击另一个div时打开一个div.下面的代码似乎只是第一次工作。
它在页面刷新时工作。始终调用关闭事件,但不会触发单击事件。

$('.redirection-list .redirection a').on('click', clickevent);

function clickevent() {
    $(this).attr("href", "#myCurrentDiv");
    $('.redirection-list li').removeAttr('id');
    $(this).closest('li').attr("id", "myCurrentDiv");
    $('.redirection-list .redirection').removeClass('active');
    $(this).closest('li').addClass('active');
    $('.block-list').removeClass('col-sm-12');
    $('.block-list').addClass('col-sm-6');
    $('.redirection-edit').addClass('open');
    $('.redirection-status span:nth-of-type(2n)').hide();
    $('.redirection-status span:nth-of-type(n)').css('border-radius', '50px');
    if ($(window).width() <= 768) {
        $('body').addClass('mobile-device');
    }
    else {
        $('body').removeClass('mobile-device');
    }
    $('.redirection-edit').insertAfter(this);
    $('.redirection-edit').fadeIn(700);
    if (location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '') && location.hostname == this.hostname) {
        var target = $(this.hash);
        target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
        if (target.length) {
            if ($(target).closest('.block-list').hasClass('search-list')) {
                $('html, body').animate({
                    scrollTop: target.offset().top - 185
                }, 500);
                return false;
            }
            else {
                $('html, body').animate({
                    scrollTop: target.offset().top - 112
                }, 500);
                return false;
            }
        }
    }
}

$('.redirection-edit .close').click(function () {
    $('.redirection-edit').removeClass('open');
    $('.redirection-edit').fadeOut(500);
    $('.redirection-list .redirection').removeClass('active');
    $('.block-list').removeClass('col-sm-6');
    $('.block-list').addClass('col-sm-12');
    $('.redirection-status span:nth-of-type(2n)').show();
    $('.redirection-status span:nth-of-type(n)').css('border-radius', '50px 0px 0px 50px');
    $('.redirection-status span:nth-of-type(2n)').css('border-radius', '0px 50px 50px 0px');
    $('.redirection-list .redirection a').bind('click',clickevent)
});

首先,太多的代码和缺乏HTML代码使问题变得混乱。 无论如何,据我了解,事件处理程序一旦完成就不会绑定到锚点,如果锚点正在作或动态创建,则可能会发生这种情况,在这种情况下,更改代码如下将解决问题

$('body').on('click', '.redirection-list .redirection a', clickevent);

最新更新