jqueryuiDialog: 초기화 전에 대화 상자에서 메서드를 호출할 수 없습니다.
대화상자가 잘 작동하는 jquery 1.5 앱이 있습니다..live 핸들러가 많은 반면에 이것을 .on으로 변경했습니다.이를 위해 jquery(현재 1.8.3 및 jquerui 1.9.1)를 업데이트해야 합니다.
자, 이제 알겠어요:Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
코드는 다음과 같습니다.
자바스크립트
var opt = {
autoOpen: false,
modal: true,
width: 550,
height:650,
title: 'Details'
};
$(document).ready(function() {
$("#divDialog").dialog(opt);
$("#divDialog").dialog("open");
...
html
<div id="divDialog">
<div id="divInDialog"></div>
</div>
왜 이런 일이 일어나는지 아십니까?
대신 이것을 사용하십시오.
$(document).ready(function() {
$("#divDialog").dialog(opt).dialog("open");
});
다음 작업도 수행할 수 있습니다.
var theDialog = $("#divDialog").dialog(opt);
theDialog.dialog("open");
는 대화 가 대화상다저않때기문다니입지장되에 입니다.$('#divDialog')
하지만 새로운 디브에서 즉시 생성되고 그에 의해 반환됩니다..dialog(opt)
기능.
jQuery를 업그레이드할 수 없고 다음과 같은 메시지가 표시됩니다.
Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
다음과 같이 해결할 수 있습니다.
$(selector).closest('.ui-dialog-content').dialog('close');
또는 보기를 제어하고 전체 페이지에서 다른 대화 상자를 전혀 사용하지 않아야 하는 경우 다음 작업을 수행할 수 있습니다.
$('.ui-dialog-content').dialog('close');
다음을 사용하는 경우에만 이 작업을 권장합니다.closest
성능 문제를 야기합니다.모든 대화 상자에서 글로벌 닫기를 수행하지 않고 작업할 수 있는 다른 방법이 있을 수 있습니다.
jqueryui 라이브러리를 병렬로 업데이트하지 않고 jquery 라이브러리만 업데이트했을 때 이 오류가 발생했습니다.저는 jqueryui 1.9.0에서 jquery 1.8.3을 사용했습니다.하지만 jquery 1.8.3을 1.9.1로 업데이트했을 때 위와 같은 오류가 발생했습니다. 나쁘게 을 냈을 때 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ.close
lines, method lines를 수 ..browser
1에서 더 이상 11.jquery 1.8..그래서 기본적으로 jquery 1.9.1 라이브러리는 jquery 1.6+와 작동한다고 jquery ui 다운로드 페이지에도 불구하고 jquery ui 1.9.0 라이브러리와 호환되지 않았습니다.기본적으로 두 버전의 다른 버전을 사용하려고 할 때 보고되지 않은 버그가 있습니다.만약 당신이 jqueryui 다운로드와 함께 번들로 제공되는 jquery 버전을 사용한다면, 나는 당신이 괜찮을 것이라고 확신하지만, 당신이 다른 버전을 사용하기 시작할 때, 당신은 익숙치 않은 경로를 벗어나서 이와 같은 오류가 발생합니다.요약하자면, 이 오류는 버전이 잘못 일치했기 때문입니다(어쨌든 제 경우).
새 jQuery UI 버전에서는 초기화되지 않은 대화 상자에서 UI 메서드를 호출할 수 없습니다.해결 방법으로 아래 검사를 사용하여 대화 상자가 활성 상태인지 확인할 수 있습니다.
if (modalDialogObj.hasClass('ui-dialog-content')) {
// call UI methods like modalDialogObj.dialog('isOpen')
} else {
// it is not initialized yet
}
다음을 사용합니다.
var theDialog = $("#divDialog").dialog(opt);
theDialog.dialog("open");
그리고 Dialog에서 MVC Partial View를 열면 인덱스에 숨겨진 버튼과 JQUERY 클릭 이벤트를 만들 수 있습니다.
$("#YourButton").click(function()
{
theDialog.dialog("open");
OR
theDialog.dialog("close");
});
그런 다음 부분 보기 HTML 내부에서 호출 버튼 트리거를 클릭합니다.
$("#YouButton").trigger("click")
나중에 또 봐.
제 경우는 다릅니다. '이것'의 범위 때문에 실패합니다.
//this fails:
$("#My-Dialog").dialog({
...
close: ()=>{
$(this).dialog("close");
}
});
//this works:
$("#My-Dialog").dialog({
...
close: function(){
$(this).dialog("close");
}
});
Dialog(대화 상자)가 초기화되거나 페이지가 준비될 때 즉시 Dialog(대화 상자)를 열려면 매개 변수를 설정할 수도 있습니다.autoOpen
로.true
대화 상자의 옵션 개체에서:
var opt = {
autoOpen: true,
modal: true,
width: 550,
height:650,
title: 'Details'
};
따라서 '$("#divDialog").dialog("open");
대화 상자 개체가 초기화되면 대화 상자가 자동으로 열립니다.
이것도 몇 가지 해결 방법입니다.
$("div[aria-describedby='divDialog'] .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-icon-only.ui-dialog-titlebar-close").click();
상위 보기 대신 부분 보기에 div 태그가 있어서 이 오류 메시지가 표시되었습니다.
페이지에 ScriptManager를 추가해야 했습니다.문제가 해결되었습니다.
나의 경우, 문제는 내가 전화를 했다는 것이었습니다.$("#divDialog").removeData();
대화 상자 내에서 양식 데이터를 재설정하는 작업의 일부입니다.
이로 인해 데이터 구조가 삭제되었습니다.uiDialog
그 말은 대화를 다시 초기화해야 한다는 것을 의미했습니다.
교체했습니다.removeData()
더 구체적인 삭제와 함께 모든 것이 다시 작동하기 시작했습니다.
언급URL : https://stackoverflow.com/questions/13520139/jquery-ui-dialog-cannot-call-methods-on-dialog-prior-to-initialization
'programing' 카테고리의 다른 글
'both added' 병합 충돌을 해결하시겠습니까? (0) | 2023.08.23 |
---|---|
NHNibernate는 무엇입니까? (0) | 2023.08.23 |
SQL 쿼리 : 다른 열을 기준으로 열에 값을 추가합니다. (0) | 2023.08.23 |
Maria에서 고유한 값을 가진 쿼리를 제한하려면 어떻게 합니까?DB (0) | 2023.08.23 |
Nodejs 이벤트 루프 (0) | 2023.08.23 |