动态绑定Jquery回调函数

时间:2012-11-05 14:52:44

标签: php javascript jquery ajax

我确信我在想这个......

文件A有一个空容器div,单击按钮,将数据加载到该div ...

文件A有一个按钮,我想将函数绑定到上面的jquery返回。

AJAX文件

echo json_encode(array('callback' => 'javascriptFunction'));

“javascriptFunction”是可以调用的有效函数。我如何或可以绑定该功能。

JAVASCRIPT

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: "../ajax.php",
    data: '&m=loadExternalData&f='+ module,
    success: function(resultData) {
        $('#externalFieldsetTitle').html(resultData.title);
        $('#externalSaveButton').bind('click', function() {
            resultData.callback;
        });
    }
}); 

我传回的不仅仅是“回调”,但对于这个例子,我认为不需要。

基本上我将外部模块加载到div中并希望允许它们指定它们的保存功能并将其传入,以便核心保存按钮可以处理多个外部加载的文件。我认为这有道理吗?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

$('#externalSaveButton').bind('click', function() {
            window[resultData.callback]();
        });

或直接:

$('#externalSaveButton').bind('click', window[resultData.callback]);

(在这种情况下,它必须在全球范围内)

答案 1 :(得分:0)

$(document).ready(function() {
$('#externalSaveButton').live('click', function(resultData) {
            resultData.callback;
        });
});   

答案 2 :(得分:0)

ajax请求可能会返回一个字符串作为函数。您可以做的是尝试将其作为Function构造函数传递:

var callback = new Function(resultData.callback);
$('#externalSaveButton').bind('click', callback);

但这一切都取决于resultData.callback的格式化方式。