2014-10-15 2 views
0

Я загружаю некоторые html с помощью JQuery .load, а затем с помощью JQuery UI, чтобы открыть диалог из div в загруженном html. Но он не работает и, кажется, потому, что пользовательский интерфейс JQuery не распознает div, хотя он загружен динамически.JQueryUI Calling Open on dialog on working

Должен ли я сделать .ливе или .on вызов как-то ???

EDIT: Только что реализованный divtimesheet назван дважды, поэтому он изменил один из них на divtimesheet_holder, но все еще та же проблема?

loadTimesheet = function() { 
     var wkending = getWeekEnding(); 
     var proId = $("#newtimesheet").attr("proid"); 
     $("#divtimesheet_holder").load("Timesheet/NewTimesheet", { proId: proId, enddate: "15/10/2014" }, function() { open();}); 
    } 

    function open() { 
     $("#clipboarddialog").dialog("open"); 
    } 


<div id="clipboarddialog"> 
    <div id="clipboard"> 
     <div id="divtimesheet"> 
      @Html.Partial("Timesheet/TimesheetHeader", Model) 
      @Html.Partial("Timesheet/TimesheetBody", Model) 
      @Html.Partial("Timesheet/TimesheetFooter", Model) 
     </div> 
    </div> 
</div> 
+0

Это должно работать, потому что вы вызываете open() после загрузки div. В 'open()' before .dialog() выполните 'console.log ($ (" # clipboarddialog "));' – artm

ответ

1

Для того, чтобы инициализировать виджет, необходимо позвонить в $("#clipboarddialog").dialog({ options });.

$(document).ready(function() { 
    $("#clipboarddialog").dialog({ 
     autoOpen: false 
    }); 
}); 
+0

Я делал это. Но то, что работало, тоже добавляло его перед операцией Open. Вот почему я упомянул. – Malcolm

+0

Вам не нужно ничего подобного. Элемент '# clipboarddialog' не добавляется динамически, а только содержимое' # divtimesheet_holder'. – Barmar

0

Существует два способа открытия диалога в jQuery.

Прежде всего, вы можете открыть диалоговое окно без упоминания options для метода .dialog.

$("#clipboarddialog").dialog(); 

Во-вторых, инициализировать диалоговое окно и открыть диалог в любом месте

//set up options 
$("#clipboarddialog").dialog({options}); 

//open 
$("#clipboarddialog").dialog("open"); 

В вашем случае, вы не должны предоставлять какие-либо опции к .dialog

Просто назвать его таким образом

function open() { 
    $("#clipboarddialog").dialog(); 
} 

Проверьте это fiddle

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