繁体   English   中英

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

[英]jquery after ajax complete /done , to call a function, the function will execute more and more times. why?

我已经被困在这个问题上大约2天了。 我的代码( 这里JSFiddle )是这样的:

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做了什么?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM