如何将传递给function()的动态参数传递给function()中调用的function()

时间:2011-09-26 19:36:07

标签: javascript jquery

我正在尝试将动态参数从网页中继到一个函数中,然后将它们传递给函数内部的调用。例如,采用下面的简化代码段,就像现在一样,直接传递参数不是问题。但是如何为每个可能的colorbox参数传入一个colorbox接受的参数而不为showColorbox()创建参数?

function showColorbox(title, url, width, height, modal, params) {

    $.colorbox({title:title, href:url, width:width, height:height, opacity:0.7});

}

例如,colorbox接受传入事件函数,如下所示,如果我直接调用colorbox:

    $.colorbox({title:title, href:url, width:width, height:height, opacity:0.7, 
                onComplete: function() {
                                 $.colorbox.resize();
                             } 
              });

所以,如果没有添加一些代码或制作另一个参数并在showColorbox()中以某种方式解析它,有没有办法让我传递onComplete参数/代码[通过showColorbox(.... {onComplete:yada yada} )或者什么]并将它们转发到$ .colorbox()函数?

更新: 成功使用以下内容,在showColorbox()函数中添加了一个额外的objParams参数。

//m_title, m_url, m_width, m_height are from fixed parameters for showColorbox()        
var objBase = {title:m_title,href:m_url,width:m_width,height:m_height} ;
var objFinal = {};

//add base parameters passed in directly, fixed params
for(var item in objBase) {
    objFinal[item] = objBase[item];
}       
//add the parameters from objParams passed in (variable params/values)
for(var item in objParams) {
    objFinal[item] = objParams[item]
}   

//call function with combined parameters in object      
$.colorbox(objFinal)

所有调用者都不需要更新,但现在使用$ .colorbox理解的参数传递一个新对象!再次感谢!

2 个答案:

答案 0 :(得分:1)

听起来你正在寻找的解决方案是希望有一种简单的方法将变量参数的各个参数作为对象文字中的命名属性值传递。如果是这样,没有办法实现这一目标。主要是因为在这种情况下,参数没有名称,所以它们没有任何地方可以映射到。

完全解决这个问题的最好方法是在每个阶段都需要一个对象,并完全省略额外的参数。

function showColorbox(obj) {
  ...
  $.colorbox(obj);
}

showColorbox({title:title, href:url, width:width, height:height, opacity:0.7});

答案 1 :(得分:1)

为什么不接受一个参数,即你传递给colorbox的对象?

function showColorbox(params) {
    $.colorbox(params);
}

然后你可以这样称呼它:

showColorbox({title:title, href:url, width:width, height:height, opacity:0.7});