javascript - .removeClass() jQuery 立即添加删除的类

标签 javascript jquery html css removeclass

我在这里遇到问题:http://jsfiddle.net/wkCV6/

当我点击 contacto 按钮时,它没问题,它可以正常打开。但是当我单击 volver 时,它会删除类并立即再次添加它。当我在执行之间发出一些警报时,我注意到了这一点。 你可以在我的 jsfiddle 中看到它。

这是我正在使用的 JS。

$(function () {
    $("div.arrastre").on("click", function () {
        $(this).find("div.bloque").addClass("rotated");
        var esto = $(this);
        setTimeout(function () {
            esto.find("div.bloque div.back").addClass("agrandar");
            esto.addClass("agrandar")
        }, 100);
    });
});

$(function () {
    $("div#volver").on("click", function () {
        var esto = $(this);
        setTimeout(function () {
            esto.closest("div.bloque").removeClass("rotated");
            if (esto.closest("div.back").hasClass("agrandar")) {
                esto.closest("div.back").removeClass("agrandar");
                alert("se supone que quité la clase agrandar en back ");
            };

            if (esto.closest("div.arrastre").hasClass("agrandar")) {
                esto.closest("div.arrastre").removeClass("agrandar");
                alert("se supone que quité la clase agrandar en arrastre");
            };
        }, 100);
    });
});

最佳答案

当您点击 div#volver 时,click 事件被分派(dispatch)并冒泡到文档,在每个祖先上触发。

您触发了您首先在 div.arrastre 上设置的回调,因为它是 #volver 的父级。

setTimeout 被调用,导致类在点击 #volver 后 100 毫秒被添加。

要防止点击事件冒泡,您可以在设置回调或stopPropagationreturn false; :

$("div#volver").on("click",function(event){
    // your code
    event.stopPropagation();
    return false;
}

Working fiddle

关于javascript - .removeClass() jQuery 立即添加删除的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860069/

相关文章:

javascript - jQZoom : innerzoom issue

javascript - 在页面加载时使用 ng-class 在 div 上设置一个类

javascript - 使用 OData 模型在间隔时间内更改表的单元格

javascript - 如何检测特定元素是否被点击?

jquery - MVC 单选按钮验证

javascript - 仅适用于 Firefox "Loading failed for the <script> with source"

Javascript int 数字加法问题

javascript - 使用多个参数从 HTML 调用 javascript 函数

html - HTML 中 "robots"元标记的用途是什么?

html - 我可以将两个元素之间的所有空间放入 flexbox 或网格中吗?