2015-01-31 93 views
0

我有一個函數的變量稱爲回調商店jQuery的腳本JS變量

function test(callback){ 

    // Some code 

    callback; 

} 

當我把這個功能我用一個襯插入回調

如。 test($('#elem').hide());

現在我想在這裏把多條線路作爲回調。我嘗試過,但它似乎沒有工作。

var resetc = function(){ 

    $('.access').removeClass('viz'); 

    window.setTimeout(function(){ 
     $('.access').find('.input.wheel').removeClass('viz'); 
     $('.access').find('input').removeAttr('disabled'); 
    },1000); 
} 

         test(resetc); 
+0

你想用回調做什麼? – Satpal 2015-01-31 18:29:38

+0

一旦函數完成,我想執行一些額外的代碼 – 2015-01-31 18:30:35

+2

使用'callback();' – Satpal 2015-01-31 18:30:56

回答

2

正如您傳遞函數引用。您可以使用回調變量來執行它正在引用的函數。像

function test(callback) { 
    // Some code 
    callback(); 
} 

您聲明test($('#elem').hide());是有,你是路過的$('#elem').hide()輸出到你的方法測試,並聲明callback;實際上並不執行任何操作沒有任何影響。

你需要改變你的函數調用test($('#elem').hide());

test(function() { 
    $('#elem').hide(); 
}); 
0

您最初的代碼沒有你的想法。要調用回調函數,你需要把()後:

function test(callback) { 
    // some code 
    callback(); 
} 

如果解決這個問題,test(resetc);會做你想要什麼。

你沒有在你的第一次測試發現這種情況的原因是因爲當你寫

test($('#elem').hide()); 
你執行 $('#elem').hide()

調用test之前,它沒有被當test運行回調完成。你需要傳遞一個函數來延遲執行,直到回調被調用:

test(function() { 
    $('#elem').hide(); 
});