jquery 在 html attr 中添加函数回调以在其他事件中调用

jquery add function call back in html attr to call in other event

我有link这样

<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" ) ;
        }

}) ;

如何在这段代码中使用我的自定义函数作为回调调用??

谢谢

不要尝试以这种方式查找函数名称。相反,使用您自己的对象来跟踪函数:

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.