我有这样的链接
<a href="#" class="open_popup" data-callback="after_close_popup_do">Open popup</a>
我在jquery中有这段代码
function after_close_popup_do(obj , list){
console.log( "obj =>"+obj+" && List =>"+list );
}
$("a.open_popup").click(function(){
$(this).addClass("shown");
$("#popup").attr("data-callback" , $(this).attr("data-callback")) ;
return false;
});
完成弹出窗口中的操作并单击完成按钮
$("#popup a.finish_popup").click(function(){
var callback = $("#popup").attr("data-callback");
var o = $("#target_div") ;
var list = {"items"=>{"a":"55","b":33}} ;
// I shoud here use the callback function
if( typeof window[callback] !== "function" ) {
console.log( "your function not working" ) ;
}else{
window[c]( list , o ) ; // We Called your function
console.log( "your function work fine" ) ;
}
}) ;
如何在此代码中使用自定义函数作为回调调用?
谢谢
答案 0 :(得分:1)
不要试图以这种方式查找功能名称。相反,使用您自己的对象来跟踪功能:
var callbacks = {
after_close_popup_do: function(obj , list){
console.log( "obj =>"+obj+" && List =>"+list );
},
...
};
然后在此对象中查找,而不是window
:
$("#popup a.finish_popup").click(function(){
var callback = $("#popup").attr("data-callback");
var o = $("#target_div") ;
var list = {"items"=>{"a":"55","b":33}} ;
// I shoud here use the callback function
if( typeof callbacks[callback] !== "function" ) {
console.log( "your function not working" ) ;
} else {
callbacks[callback]( list , o ) ; // We Called your function
console.log( "your function work fine" ) ;
}
});
这将允许您使用本地功能;您的原始代码要求在全局上下文中定义函数,以便将它们添加到window
。