2012-11-22 39 views
0

爲什麼我需要實現我在這裏提出的問題有點令人費解,因爲我正在使用已經有一些jQuery的CMS進行工作。但基本上,當用戶點擊鏈接或從下拉菜單中選擇(他們都做同樣的事情)時,我需要調用2個函數,我們稱它們爲foo()bar()如何在更改後調用函數()

我可以得到它當用戶單擊工作:

$('.links').on("click", "a", function() { 
    $(".dropdown select").change(); 
    bar(); 
    return false; 
}); 

$(".dropdown select").change(function() { 
    $("select option:selected").each(function() { 
     foo(); 
    }); 
}); 

的問題是吧()需要change()事件後調用。我不能在change()事件中調用bar()。當用戶點擊時,沒有問題。但我不知道如何直接從change()撥打電話bar(),但是當change()中的所有內容完成時。

有沒有辦法在change()上添加某種回調?我嘗試了幾種不同的語法,但無法弄清楚。

+0

只需將它放在更改函數處理程序的末尾,對不對?你的意思是有多個變更事件處理程序,並且你想在執行完所有變更事件後調用'foo()'? –

+0

概念有點含糊,不清楚序列問題是什麼,或者爲什麼bar()不能在變更處理程序中調用 – charlietfl

+0

可能觸發$(「。links」)上的點擊事件trigger('click')會有所幫助,但這會觸發所有具有類鏈接元素的點擊事件 –

回答

1
$('.links').on('click', 'a', function(){ 
    myFunc(); 
    return false; 
}); 
$('.dropdown select').on('change', myFunc); 

function myFunc(){ 
    $('select option:selected').each(function(){ 
    foo(); 
    }); 
    bar(); 
} 

爲什麼不添加第三個函數來處理這種行爲? (並且在技術上保持相同數量的函數調用,因爲我們可以刪除由selectchange處理的匿名函數!)

相關問題