Simplemodal ajax调用

时间:2009-08-08 08:02:13

标签: jquery simplemodal

我正在使用此代码在我的应用程序中实现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(); }

谢谢, 迈克尔

1 个答案:

答案 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>

希望这会有所帮助:)