jQuery UI 대화 상자 - 닫은 후에 열리지 않음
에 문제가 있습니다.
문제는 대화상자를 닫은 후 트리거하는 링크를 클릭하면 페이지를 새로 고치지 않으면 다시 팝업이 뜨지 않는다는 것입니다.
실제 페이지를 새로 고치지 않고 대화 상자를 다시 호출하려면 어떻게 해야 합니까?
아래는 제 코드입니다.
$(document).ready(function() {
$('#showTerms').click(function()
{
$('#terms').css('display','inline');
$('#terms').dialog({
resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons:{ "Close": function() { $(this).dialog("close"); } },
close: function(ev, ui) { $(this).remove(); },
});
});
감사해요.
당신은 사실 당신이 사용해야 할 것입니다.$("#terms").dialog({ autoOpen: false });
초기화를 하기 위해서요.그러면 사용할 수 있습니다.$('#terms').dialog('open');
대화상자를 열고,$('#terms').dialog('close');
문을 닫으려고요.
해결했습니다.
대신 destrough 기능을 사용했지만(말이 안 됩니다) 효과가 있었습니다.
$(document).ready(function() {
$('#showTerms').click(function()
{
$('#terms').css('display','inline');
$('#terms').dialog({resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons:{ "Close": function() { $(this).dialog('**destroy**'); } },
close: function(ev, ui) { $(this).close(); },
});
});
$('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' });
});
마지막 줄에서, 사용하지 마세요.$(this).remove()
사용하다$(this).hide()
대신.
EDIT: 명확하게 설명하자면, 클릭 닫기 이벤트에서 다음을 제거합니다.#terms
DOM의 디브가 돌아오지 않는 이유입니다.대신 숨겨주시면 됩니다.
대화상자는 한 번만 초기화할 수 있다고 생각합니다.위의 예는 #terms를 클릭할 때마다 대화상자를 초기화하려고 하는 것입니다.이로 인해 문제가 발생합니다.대신 초기화는 클릭 이벤트 외부에서 수행해야 합니다.예는 아마도 다음과 같이 보여야 합니다.
$(document).ready(function() {
// dialog init
$('#terms').dialog({
autoOpen: false,
resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons: { "Close": function() { $(this).dialog('close'); } },
close: function(ev, ui) { $(this).close(); }
});
// click event
$('#showTerms').click(function(){
$('#terms').dialog('open').css('display','inline');
});
// date picker
$('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' });
});
저는 당신이 그것을 정리하면, 당신이 설명한 '링크로부터의 개방' 문제가 해결될 것이라고 생각합니다.
이러한 접근 방식은 다음과 같습니다.
대화상자에서 X를 클릭하거나 'Be wareen'을 클릭하여 대화상자를 닫을 수 있습니다.돔에 추가된 html의 모든 비트가 나중에 제거되는지 확인해야 하기 때문에 (임의) id를 추가합니다.
$('<div id="dossier_edit_form_tmp_id">').html(data.form)
.data('dossier_id',dossier_id)
.dialog({
title: 'Opdracht wijzigen',
show: 'clip',
hide: 'clip',
minWidth: 520,
width: 520,
modal: true,
buttons: { 'Bewaren': dossier_edit_form_opslaan },
close: function(event, ui){
$(this).dialog('destroy');
$('#dossier_edit_form_tmp_id').remove();
}
});
<button onClick="abrirOpen()">Open Dialog</button>
<script type="text/javascript">
var $dialogo = $("<div></div>").html("Aqui tu contenido(here your content)").dialog({
title: "Dialogo de UI",
autoOpen: false,
close: function(ev, ui){
$(this).dialog("destroy");
}
function abrirOpen(){
$dialogo.dialog("open");
}
});
//**Esto funciona para mi... (this works for me)**
</script>
엄청 오래된 실인데 '말도 안 돼'라는 대답까지 나오니 답을 덧붙이려고 했는데...
원래 게시물은 $(이것)을 사용했습니다.remove(); close handler에서는 실제로 DOM에서 대화 div가 제거됩니다.대화 상자가 제거되었기 때문에 대화 상자를 다시 초기화하려고 시도해도 작동하지 않습니다.
$(이것)을 사용합니다.dialog('destroy')는 DOM에서 메서드를 제거하지 않는 대화 개체에 정의된 메서드 파괴를 호출합니다.
설명서에서:
파괴하다, 멸하다, 멸하다, 멸하다, 멸하다, 멸하다
대화 상자 기능을 완전히 제거합니다.이렇게 하면 요소가 >>사전 초기화 상태로 돌아갑니다.이 메서드는 인수를 허용하지 않습니다.
그럴만한 이유가 있는 경우에만 파괴하거나 가까이에서 제거해야 합니다.
$(this).dialog('destroy');
효과가 있습니다!
.close ()는 일반적이며 더 많은 개체를 참조하여 사용할 수 있습니다. .dialog('close')는 대화상자에서만 사용할 수 있습니다.
대화상자를 대화파일 브라우저와 업로더로 사용한 다음 코드를 이렇게 다시 씁니다.
var dialog1 = $("#dialog").dialog({
autoOpen: false,
height: 480,
width: 640
});
$('#tikla').click(function() {
dialog1.load('./browser.php').dialog('open');
});
모든 게 잘 되는 것 같습니다.
jquery-ui overlay 대화 상자에 대해서도 같은 문제가 있었습니다. 페이지를 다시 로드하지 않으면 한 번만 작동하고 이후에는 중지됩니다.예 중 다에서 .
에 여러 개의
flowplayer_tools_multiple_open_close
- 누가 그랬을까요?:-) -
중요한 설정은
oneInstance: false
그래서 지금은 이렇게...
$(document).ready(function() {
var overlays = null;
overlays = jQuery("a[rel]");
for (var n = 0; n < overlays.length; n++) {
$(overlays[n]).overlay({
oneInstance: false,
mask: '#669966',
effect: 'apple',
onBeforeLoad: function() {
overlay_before_load(this);
}
});
}
}
그리고 모든 것이 정상적으로 작동합니다.
이것이 누군가에게 도움이 되기를 바랍니다.
o.
jQuery 문서에는 이 상황과 해결 방법을 설명하는 기사 'jQuery UI 대화상자의 기본 사용'에 대한 링크가 있습니다.
언급URL : https://stackoverflow.com/questions/366854/jquery-ui-dialog-box-does-not-open-after-being-closed
'programing' 카테고리의 다른 글
PowerShell 프로세스의 프로세스 ID 가져오기 (0) | 2023.09.19 |
---|---|
원격 서버에서 반환된 JSONP 데이터를 구문 분석하는 방법 (0) | 2023.09.19 |
순수 자바스크립트는 입력 값 변경을 듣기 (0) | 2023.09.19 |
One malloc 문을 사용하여 2-D 배열을 할당하는 방법 (0) | 2023.09.19 |
임시 NSManaged Object 인스턴스를 처리하는 방법은 무엇입니까? (0) | 2023.09.19 |