2017-05-08 96 views
0

我想知道是否和如何你可以傳遞一個jQuery命令,函數的參數jQuery的通帶參數的函數的參數jQuery的方法

var childs = ["#foo", "#bar"]; 

loopTheChilds("trigger('change')"); 

loopTheChilds("prop('disabled', true)"); 

var loopTheChilds = function (operation) { 

    $.each (childs, function (idx, val) { 
     $(val)[operation](); 
    }); 

} 

我的GOL將獲得此

$("#foo").trigger("change"); 
$("#bar").trigger("change"); 

// or 

$("#foo").prop('disabled', true); 
$("#bar").prop('disabled', true); 

或知道如何以任何其他方式獲得相同的結果。

感謝

+0

這是可能的的eval(),但使用eval()被認爲是不好的做法。 – WaldemarIce

回答

1

你不能告訴的JavaScript代碼是什麼,除非你使用eval但在評論中提到的,這是不是很安全,一般不建議執行作爲一個字符串。然而你可以做的是讓你的loopTheChilds方法以函數作爲參數,並且該函數有一個引用元素的參數。

所以,你可能最終會做一些像這樣:

var childs = ["#foo", "#bar"]; 

loopTheChilds(function(elem) { 
    elem.trigger('change'); 
}); 

loopTheChilds(function(elem) { 
    elem.prop('disabled', true); 
}); 

function loopTheChilds(func) { 
    $.each(childs, function(idx, elemName) { 
     func($(elemName)); //wrap in jquery selector 
    }); 
} 

現在你只要沿着你想,當你調用loopTheChilds方法來執行該功能通過。

工作示範這裏:https://jsfiddle.net/phpyn1t6/

+0

這不完全是我的想法,但在我看來,這是一個很好的解決方案。謝謝 –