2014-07-03 183 views
0

我想在一個元素創建接收另一個函數作爲參數的函數,然後調用這個函數,就像這樣:有沒有辦法調用一個元素的函數作爲參數傳遞?

function applyFunctionToDivs(function1, function2, function3) { 
    $('#div1').function1(); 
    $('#div2').function2(); 
    $('#div3').function3(); 
}; 

是否有一個jQuery/JavaScript的辦法直接做到這一點?

我做到了這一點,但是創造這樣的附加功能:

if (value == 'A') { 
     applyFunctionToDivs(showElement, hideElement, hideElement); 
    } 

    if (value == 'B') { 
     applyFunctionToDivs(hideElement,showElement, hideElement); 
    } 

    if (value == 'C') { 
     applyFunctionToDivs(hideElement, hideElement, showElement); 
    } 

我的功能顯示/隱藏:

function showElement(elem) { 
    elem.show(); 
}; 

function hideElement(elem) { 
    elem.hide(); 
}; 

function applyFunctionToDivs(fun1, fun2, fun3) { 
    fun1($('#div1')); 
    fun2($('#div2')); 
    fun3($('#div3')); 
}; 

我認爲這可能是最優化。任何建議直接做到這一點?

+1

可能重複[如何執行一個JavaScript函數,當我的名字作爲字符串](http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-當我有它的名字作爲字符串) –

+0

你的重複建議是指如何調用一個函數,當你有一個名稱作爲字符串,我的問題是如何調用一個方法使用元素:element.function () –

+0

您可以將元素存儲爲單個變量。 – Popnoodles

回答

2

https://stackoverflow.com/a/11356926/252671,你可以做到以下幾點:

$("body")['function']() 

所以,你可以做到以下幾點,但它可能是進一步重構爲使參數轉換爲通過數組的數組和循環。

function applyFunctionToDivs(function1, function2, function3) { 
    $('#div1')[function1](); 
    $('#div1')[function2](); 
    $('#div1')[function3](); 
}; 
+0

很好的答案,謝謝@Skram –

相關問題