同样的问题已被提出,但在不同的背景下:
我有两个div:
<div id='content'>Click Me!</div>
<div id='Div1'></div>
此代码有效(单击Click Me时显示“Function A”):
$(document).ready(function () {
setUp("1");
});
function setUp(i) {
$('#content').on( 'mouseup', function( ) {f_A( );} )
}
function f_A() {
$('#Div1').append(document.createTextNode("Function A"));
}
但是,我真正想要在setUp
中做的是根据i
的值选择要调用的几个函数之一。因此,我需要function( ) { f_A( );}
之类的function( ) { FUNCTION_NAME_DEPENDING_ON_i( );}
,而不是{{1}}。我该怎么做呢? (我使用的是jQuery 1.9.1。)
答案 0 :(得分:0)
将函数存储在对象(如果使用索引,则为数组)中:
$(document).ready(function () {
// Note: instead of '1', you could pass 'f_A' or similar
setUp("1");
});
function setUp(i) {
$('#content').on( 'mouseup', function( ) {funcs[i]( );} )
}
// Note: instead of '1' you could use readable names as the key: 'f_A' or similar
var funcs = {
"1": function f_A() {
$('#Div1').append(document.createTextNode("Function A"));
}
};
注意:如果要在被调用函数中使用与事件处理程序相同的上下文,请使用以下格式:
$('#content').on( 'mouseup', function(evt) {funcs[i].call(this, evt);} )
答案 1 :(得分:0)
好的,我会尽力给你答案
使用开关声明 //如果您的i值限制在某个可管理范围内,例如4 5
你可以这样做
function setUp(i) {
$('#content').on( 'mouseup', function( ) {
switch(i){
case 1: funcs[1]( ); // and so on }}
)}