簡體   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