的jQuery插件功能调用回HTML ATTR在其他事件
问题描述:
叫我有这样的jQuery插件功能调用回HTML ATTR在其他事件
<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
。
+0
谢谢@Barmar我的自定义对象对我来说是个好主意,它起作用 – Safy 2015-02-09 22:20:34
结果总是'你的功能不工作'# – Safy 2015-02-09 21:49:51
'窗口[c]'应该是'窗口[回调]'。 – Barmar 2015-02-09 21:51:33
soryy手错误,但它不去这个代码,因为窗口[回调]不起作用,它返回你的功能不工作 – Safy 2015-02-09 21:53:59