jjery在ajax完成/完成后,要调用一个函数,该函数会执行越来越多次。为什么?

时间:2011-08-28 15:36:31

标签: javascript jquery ajax

我已经坚持这个问题大约2天了。我的代码(JSFiddle here)因此是:

var foo = function(){
    // The code in here will be execute more and more and more times
    $(element).hover(function() {
        console.log("buggie code run")
    })
}

var sliderShow = $(secondElement).bxSlider({
    onAfterSlide:function(currentSlideNumber) {
        $.ajax("/echo/html/").done(function() {
            foo();
        })
    }
})

我的问题是代码会运行多次。例如,当您将鼠标悬停在元素上时,它将触发该函数一次,但第二次将触发该函数两次。第三次它会发射3次,依此类推。为什么会这样?我是在做一个基本的逻辑错误,还是这个JavaScript做了什么?

2 个答案:

答案 0 :(得分:2)

这意味着您可能会在每次加载时多次注册该事件。你应该只这样做一次!

答案 1 :(得分:0)

悬停本身在进入时调用该函数两次,在退出时调用一次..尝试

var foo = function(){
    $(element).hover(function() {console.log("IN")},function() {console.log("OUT")});
}

但是当ThiefMaster指出你也多次注册了事件处理程序时。在你的滑块中,第二次你将再次添加事件处理程序,依此类推。

查看http://docs.jquery.com/Namespaced_Events