Jquery - .one不解绑

Jquery - .one does not unbind

我有以下情况: 我有一个动画图,在动画结束时我想将点击处理程序添加到 "dead" link,然后隐藏实际幻灯片并显示下一张。我用 .one 绑定它,因为我不想在加载后再次触发它。 所以它有效,它显示下一张幻灯片,但该事件并未取消绑定。 即使我手动解除绑定它也会触发事件。

有人可以给我线索吗? 谢谢 杰斯塔

$("li#slide3").off().on("click", $(this), function() {
$("#slide3 .device").animate({opacity:1}, 1000, function() {
    $("#slide3 .device").animate({opacity:0}, 1000, function() {
        console.log($("li#slide3 img.graph_adds").data("height"));
        $("li#slide3 img.graph_adds").animate({height:$("li#slide3 img.graph_adds").data("height")}, 1500, function() {
            $("#book_container").one("click", "a#book", function(ev) {  
                ev.stopImmediatePropagation();
                ev.preventDefault();
                if (!animBook) {    initialiseAnimatedImages(); }
                $("li.active_slide").fadeOut(500, function() {

                    $("li#slide4").addClass("active_slide").fadeIn(1000);
                    resetSlides();
                }).removeClass("active_slide");

            });
        });
    });
});
});

这是从元素中删除所有绑定的 JQuery 命令:

$("#book_container").unbind();  //to flush previously bound actions

所以,我想我找到了解决方案。动画是问题所在。因为我的代码结构有多个设备和图表,每个设备都触发功能代码,所以设备 1 触发,然后两个图表触发两次,然后设备 2 再次触发它们,依此类推。

使用 .promise().done() 结构,所有事件都只触发一次,动画有效,所有事件都只触发一次。现在我绑定 .on() 语句中的元素也应该起作用,因为现在它们应该只绑定一次...但是...nevah 更改 运行 系统 ^^

$("li#slide3").on("click", $("div.slide3"), function(ev) {
$("#slide3 .device").animate({opacity:1}, 1000).promise().done(function() {
    $("#slide3 .device").animate({opacity:0}, 1000).promise().done(function() {
        console.log("slide3-height: "+$("li#slide3 img.graph_adds3").data("height"));
        $("li#slide3 img.graph_adds3").animate({height:$("li#slide3 img.graph_adds3").data("height")}, 1500).promise().done(function() {
            console.log("slide3 click");
            if(!$("a#book").hasClass("slide_4") ) {
            $("a#book").addClass("slide_3"); }
        });
    });
}).promise().done(function() { console.log("div.slide3 anim don") });

});