使用 addClass 时未触发 Jquery 类选择器

Posted

技术标签:

【中文标题】使用 addClass 时未触发 Jquery 类选择器【英文标题】:Jquery class selector not triggering when a addClass has been used 【发布时间】:2013-06-20 03:01:33 【问题描述】:

以下代码向 DIV 添加了一个名为“shift”的类。

$('.adminopen').click(function()
        $('.backoffice').addClass('open');
        $('.maincontent').addClass('shift')
        return false
    );

一旦添加了这个类,为什么下一个脚本也包含在初始文档准备部分中没有触发。

$('.shift').click(function()
        $('.backoffice').removeClass('open');
        $('.maincontent').removeClass('shift');
    );

【问题讨论】:

【参考方案1】:

因为您只绑定到初始元素。使用on 的委托:

$(document.body).on('click', '.shift', function()

【讨论】:

【参考方案2】:

这是因为当你将事件绑定到 shift 时, DOM 中不存在 shift

你需要使用事件委托 -

$(document).on('click','.shift',function()
        $('.backoffice').removeClass('open');
        $('.maincontent').removeClass('shift');
);

【讨论】:

【参考方案3】:

按照上面的建议使用事件委托,或者在分配类时正确绑定事件句柄。

function bindShift() 
    $('.shift').click(function () 
        $('.backoffice').removeClass('open');
        $('.maincontent').removeClass('shift');
    );


$('.adminopen').click(function () 
    $('.backoffice').addClass('open');
    $('.maincontent').addClass('shift');
    bindShift();
    return false
);

【讨论】:

以上是关于使用 addClass 时未触发 Jquery 类选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何为 JQuery addClass/removeClass 函数设置动画?

显示键盘时未在移动设备中触发提交事件

JQuery属性操作 addclass removeclass hasclass toggleClass()

单击时添加和删除类 Jquery

jQuery addClass() 方法

使用 jQuery UI 或 CSS 动画 addClass 和 removeClass [重复]