Simplemodal Ajax Call - PullRequest
       6

Simplemodal Ajax Call

1 голос
/ 08 августа 2009

Я реализую 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, но в идеале можно было бы вызвать функцию, содержащуюся в данных, поскольку каждый диалог может иметь разные вызовы jquery.

Есть ли способ сделать например

onShow: function(dialog) { dialog.data.my_function(); }

Спасибо, Michael

Ответы [ 2 ]

1 голос
/ 18 января 2013

Расширение на @ и ответ. Поскольку live () была удалена в jQuery 1.9:

$(document).on("click","a.dialog-link",function(e) {
    e.preventDefault();
    $.get($(this).attr("href"),function(data) {
        $.modal(data, {position: ["10%','30%"], onShow: function(dialog){
            external_function()
        }});
    });
});
1 голос
/ 08 августа 2009

Как показывает проверка 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>

Надеюсь, это поможет:)

...