2012-11-05 70 views
2

我相信我是在想这...动态绑定jQuery的回调函数

文件中有一个空的div容器,按键,就可将数据加载到该专区......

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

AJAX FILE

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中,并希望允许它们指定它们的保存功能并将其传入,以便核心保存按钮可用于多个外部加载的文件。我相信这是有道理的?

+0

当我尝试使用任何动态创建的内容时,.live()方法通常适用于我。所以试试.live()方法,而不是.bind() – Schokea

+0

@Ian - 试过了,没有区别。谢谢。 –

+0

从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的全部功能。 http://api.jquery.com/on/ – st3inn

回答

2

尝试这样:

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

或者直接:

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

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

+0

这工作。谢谢! –

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

如上所述,.live也不起作用。谢谢。 –

+0

试试这个,我想那个sry –

0

Ajax请求可能返回字符串作为函数。你能做的就是尽量把它作为一个Function构造:

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

但是这一切都依赖于resultData.callback是如何被格式化。

+0

试过这个,也没做任何事。谢谢。 –