我有一个具有很多属性的表单。
其中一个是回调,其中包含我想要调用的回调函数。
<form id="placeOrder" method="post" class="ajax" popupclass="order-created" callback="orderCreated" action="url" >
和JS部分是:
function popupHandler(sender){
var popupclass = $(sender).attr('popupclass');
var callback = $(sender).attr('callback');
if ((typeof popupclass== "undefined") )
{
$("#pageContent").clickPopup('saved');
}
else
{
if ((typeof callback!= "undefined") )
{
//TODO: call the function , function name is in callback attr
}
$("#pageContent").clickPopup(popupclass);
}
}
function orderCreated(){
$('#basketquantity').html('0');
$('#placeOrderButton').disableButton();
}
我已经检查了这个page,但函数的名称是在那里预定义的,因此不适合我。
答案 0 :(得分:4)
假设该函数是全局函数,则它在window
内。所以你可以这样称呼它:
window[callBackAsString]();
答案 1 :(得分:3)
如果attr中的字符串表示全局范围函数的名称,则可以通过window[callback]();
虽然我不会像你想的那样使用定制的attrs,但如果我按照你的建议去做它会是这样的:
var orderCreated = function()
{
$( '#basketquantity' ).html( '0' );
$( '#placeOrderButton' ).disableButton();
},
popupHandler = function( sender )
{
var $sender = $( sender ),
$pageContent = $( '#pageContent' ),
popupclass = $sender.attr( 'popupclass' ),
callback = $sender.attr( 'callback' );
if( typeof popupclass === 'undefined' )
{
$pageContent.clickPopup( 'saved' );
}
else
{
if( typeof callback !== 'undefined' && typeof window[callback] === 'function' )
{
window[callback]();
}
$pageContent.clickPopup( popupclass );
}
};