2014-10-15 2 views
0

JQuery .load를 사용하여 일부 HTML을로드하고 JQuery UI를 사용하여로드 된 HTML의 div에서 대화 상자를 엽니 다. 하지만 JQuery UI는 동적으로로드되었지만 div가 존재한다는 것을 인식하지 못하기 때문에 작동하지 않는 것으로 보입니다.JQueryUI 작업 중 대화 상자에서 열기

.live 또는 .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

div를로드 한 후 open()을 호출하기 때문에 작동합니다. .dialog() 전에'open()'에서'console.log ($ ("# clipboarddialog")); ' – artm

답변

1

위젯을 초기화하려면 $("#clipboarddialog").dialog({ options });으로 전화해야합니다.

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

나는 그것을하고 있었다. 그러나 무엇이 효과가 있었는지는 Open 진술 이전에 추가 한 것입니다. 그래서 나는 .live에 대해 언급했다. – Malcolm

+0

그런 것은 필요 없습니다. '# clipboarddialog' 요소는 동적으로 추가되지 않고'# divtimesheet_holder'의 내용 만 있습니다. – Barmar

0

jQuery에는 대화 상자를 여는 방법에는 두 가지가 있습니다.

먼저 .dialog 메소드의 경우 options을 언급하지 않고 직접 대화 상자를 열 수 있습니다.

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

둘째, 대화 상자를 초기화하고 귀하의 경우에는 대화 어디서나

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

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

을 열고, 당신은 .dialog

에 대한 옵션을 제공하지 말아야 간단하게이 방법

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

이것을 확인하십시오. fiddle

희망이 있습니다

관련 문제