Jquery-.one不会解除绑定



我有以下情况:我有一个动画图,在动画的最后,我想给一个"死"链接添加一个点击处理程序,然后隐藏实际的幻灯片并显示下一个。我把它和一捆在一起,因为我不想在装货后再把它开火。所以它工作了,它显示了下一张幻灯片,但事件并没有解除绑定。即使我手动解除绑定,它也会触发事件。

有人能给我一个线索吗?thxjesta

$("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");
            });
        });
    });
});
});

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

对于.procise().done()结构,all只触发一次,动画就会工作,所有事件都只触发一个。现在,我绑定.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") });

});

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

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

相关内容

  • 没有找到相关文章

最新更新