Jquery plugins 将函数传递给另一个函数并按名称调用 ... 函数helloworld(){alert('helloworld');} ...
问题,;如何生成回调以传递另一个函数Jquery plugins 将函数传递给另一个函数并按名称调用 ... 函数helloworld(){alert('helloworld');} ...,jquery-plugins,jquery,Jquery Plugins,Jquery,问题,;如何生成回调以传递另一个函数 <a id="aHw" href="#" callbackName="helloworld">test</a> ... <script> function helloworld() { alert('hello world'); } </script> ... ... var cbName=$('#aHw').attr('callbackName'); foo(
<a id="aHw" href="#" callbackName="helloworld">test</a>
...
<script>
function helloworld() { alert('hello world'); }
</script>
...
...
var cbName=$('#aHw').attr('callbackName');
foo(passfunction)//怎样???
...
函数foo(回调)
{
callBack();//呼叫hello world。
}
提前感谢。JavaScript中的函数只是一个对象 这个问题对我来说并没有什么意义,但请考虑以下问题:
<script>
...
var cbName = $('#aHw').attr('callbackName');
foo( passfunction ); //How???
...
</script>
<script>
function foo(callBack)
{
callBack(); // call hello world.
}
</script>
愉快的编码。JavaScript中的函数只是一个对象
function fn1 () {
alert("fn1")
}
function doIt(cb) {
cb()
}
// direct -- to show point in general
// fn1 evaluates to the function-object, which is then passed
doIt(fn1)
// lookups up fn1 by name, then passes that function-object
// the value "fn1" can be any arbitrary string, such as that which
// was stored in the attr:
// e.g. doIt(window[cbName])
doIt(window["fn1"])
// anon function to iterate sameness
// the anon function returns a new function-object
doIt(function () { alert("anon") })
这个问题对我来说并没有什么意义,但请考虑以下问题:
<script>
...
var cbName = $('#aHw').attr('callbackName');
foo( passfunction ); //How???
...
</script>
<script>
function foo(callBack)
{
callBack(); // call hello world.
}
</script>
快乐编码
function fn1 () {
alert("fn1")
}
function doIt(cb) {
cb()
}
// direct -- to show point in general
// fn1 evaluates to the function-object, which is then passed
doIt(fn1)
// lookups up fn1 by name, then passes that function-object
// the value "fn1" can be any arbitrary string, such as that which
// was stored in the attr:
// e.g. doIt(window[cbName])
doIt(window["fn1"])
// anon function to iterate sameness
// the anon function returns a new function-object
doIt(function () { alert("anon") })
我想这就是你想要的
但是如果它在浏览器中,并且您知道回调是一个全局对象,那么您可以这样做
foo( Function('return ' + cbName)() )
我想这就是你想要的
但是如果它在浏览器中,并且您知道回调是一个全局对象,那么您可以这样做
foo( Function('return ' + cbName)() )
如果没有其他帮助,
eval()
将:
foo(window[cbName])
如果没有其他帮助,
eval()
将:
foo(window[cbName])
如果您知道函数的定义位置(例如
窗口
,或自定义名称空间),则可以通过字符串名称调用它。否则,您将不得不评估(坏主意)。另外,使用数据属性
function foo( callBack ) {
eval( callBack + '()' );
}
如果您知道函数的定义位置(例如窗口
,或自定义名称空间),则可以通过字符串名称调用它。否则,您将不得不评估(坏主意)。另外,使用数据属性
function foo( callBack ) {
eval( callBack + '()' );
}
嗯。因此,要让锚点在鼠标上方执行某些操作,您可以使用以下代码:
// invoke runs a function by name in the provided context, or window
function invoke(cbname, context){
return (context || window)[cbname].call();
}
// get attribute through the data method
var funcName = $('a').data('callback');
// run callback
var result = invoke(funcName);
或者,您可以将匿名函数传递给上述用户:
function callSomeFunction( fn )
{
fn();
}
callSomeFunction( alert );
如果您试图将函数名作为字符串传递(这是一个根本不好的主意,也是一个可怕的风险,很难调试,不要这样做),那么您可以使用eval:
callSomeFunction( function(){ alert( "Finally! A message!" ); } );
或者,您可能能够逃脱:
function callNamedFunction( fn )
{
eval(fn)()
}
嗯。因此,要让锚点在鼠标上方执行某些操作,您可以使用以下代码:
// invoke runs a function by name in the provided context, or window
function invoke(cbname, context){
return (context || window)[cbname].call();
}
// get attribute through the data method
var funcName = $('a').data('callback');
// run callback
var result = invoke(funcName);
或者,您可以将匿名函数传递给上述用户:
function callSomeFunction( fn )
{
fn();
}
callSomeFunction( alert );
如果您试图将函数名作为字符串传递(这是一个根本不好的主意,也是一个可怕的风险,很难调试,不要这样做),那么您可以使用eval:
callSomeFunction( function(){ alert( "Finally! A message!" ); } );
或者,您可能能够逃脱:
function callNamedFunction( fn )
{
eval(fn)()
}