我正在使用此代码在我的应用程序中实现Simplemodal:
$(".dialog-link").live('click', function(e) {
e.preventDefault();
$.get($(this).attr('href'),function(data) {
$.modal(data, {onOpen: open, position: ['10%','30%']});
);
});
(仅供参考:onOpen回调只设置了一些高度)
ajax调用返回的文件(包含在数据中)有一些 jquery调用datepicker等。但是当我的对话框显示时 datepicker不起作用。
我知道我可以从onShow回调中打开datepicker,但理想的情况是调用包含在数据中的函数,因为每个对话框都可以有不同的jquery调用。
有没有办法做例如
onShow: function(dialog) { dialog.data.my_function(); }
谢谢, 迈克尔
答案 0 :(得分:1)
由于DOM检查可能会显示(firebug总是很方便......),模态对话框会将外部文档加载到div中,剥离<html>
和<head>
标记。它似乎也导入到加载文档中定义的主窗口对象和函数的范围内。
因此,调用函数就好像它在另一个窗口或框架( dialog.data.my_function )的范围内一样。
对我来说有用的是直接将外部函数绑定到onShow事件。
主要文件:
<script type="text/javascript">
$("a.dialog-link").live('click', function(e) {
e.preventDefault();
$.get($(this).attr('href'),function(data) {
$.modal(data, {position: ['10%','30%'], onShow: function(dialog){
external_function()
}});
});
</script>
外部文件(加载到模态框中:):
<html><head><title>bla bla </title>
<script type="text/javascript">
function external_function(){$("#external_content").text("UPDATED!")};
</script>
</head>
<body>
<div id="external_content"> .... </div>
</body>
</html>
希望这会有所帮助:)