سؤال

أنا أستخدم jquery-ui-dialog توصيل في

أنا أبحث عن طريقة لتحديث الصفحة عندما يكون مربع الحوار مغلقًا في بعض الظروف.

هل هناك طريقة لالتقاط حدث قريب من مربع الحوار؟

أعلم أنه يمكنني تشغيل التعليمات البرمجية عند النقر فوق زر الإغلاق ولكن هذا لا يغطي إغلاق المستخدم باستخدام مفتاح الهروب أو علامة x في الزاوية اليمنى العليا.

هل كانت مفيدة؟

المحلول

لقد وجدته!

يمكنك التقاط حدث الإغلاق باستخدام الكود التالي:

 $('div#popup_content').on('dialogclose', function(event) {
     alert('closed');
 });

من الواضح أنه يمكنني استبدال التنبيه بكل ما أحتاج إلى القيام به.
يحرر: اعتبارًا من Jquery 1.7، أصبح bind() قيد التشغيل()

نصائح أخرى

وأعتقد أنك يمكن أن تفعل ذلك أثناء إنشاء الحوار (نسخ من مشروع فعلت):

dialog = $('#dialog').dialog({
    modal: true,
    autoOpen: false,
    width: 700,
    height: 500,
    minWidth: 700,
    minHeight: 500,
    position: ["center", 200],
    close: CloseFunction,
    overlay: {
        opacity: 0.5,
        background: "black"
    }
});

ملحوظة close: CloseFunction

$("#dialog").dialog({
autoOpen: false,
resizable: false,
width: 400,
height: 140,
modal: true, 
buttons: {
  "SUBMIT": function() { 
    $("form").submit();
  }, 
  "CANCEL": function() { 
    $(this).dialog("close");
  } 
},
**close: function() {
  alert('close');
}**
});
$( "#dialogueForm" ).dialog({
              autoOpen: false,
              height: "auto",
              width: "auto",
              modal: true,
                my: "center",
                at: "center",
                of: window,
              close : function(){
                  // functionality goes here
              }  
              });

و"وثيقة" ممتلكات الحوار يعطي الحدث وثيق لنفسه.

وU يمكن أيضا محاولة هذا

$("#dialog").dialog({
            autoOpen: false,
            resizable: true,
            height: 400,
            width: 150,
            position: 'center',
            title: 'Term Sheet',
            beforeClose: function(event, ui) { 
               console.log('Event Fire');
            },
            modal: true,
            buttons: {
                "Submit": function () {
                    $(this).dialog("close");
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            }
        });

وهذا ما عملت بالنسبة لي ...

$('#dialog').live("dialogclose", function(){
   //code to run on dialog close
});
<اقتباس فقرة>   

واعتبارا من مسج 1.7، وطريقة .على () هو الأسلوب المفضل لربط معالجات الأحداث إلى وثيقة.

ولأن لا أحد خلقت في الواقع جوابا باستخدام .on() بدلا من bind() قررت أن إنشاء واحد.

$('div#dialog').on('dialogclose', function(event) {
     //custom logic fired after dialog is closed.  
});

وإضافة خيار 'وثيقة' مثل تحت العينة وتفعل ما تريد وظيفة المضمنة

close: function(e){
    //do something
}

إذا كنت أفهم نوع النافذة التي تتحدث عنها، فلن أفعل ذلك $(نافذة).إلغاء التحميل() (لنافذة الحوار) هل تعطيك الخطاف الذي تحتاجه؟

(وإذا أسأت الفهم، وكنت تتحدث عن مربع حوار يتم إنشاؤه عبر CSS بدلاً من نافذة متصفح منبثقة، إذن الجميع إن طرق إغلاق تلك النافذة هي عناصر يمكنك تسجيل مؤشرات النقر الخاصة بها.)

يحرر: آه، أرى الآن أنك تتحدث عن مربعات حوار jquery-ui، والتي يتم إجراؤها عبر CSS.يمكنك ربط X الذي يغلق النافذة عن طريق تسجيل معالج النقر للعنصر مع الفئة واجهة المستخدم-الحوار-شريط العنوان-إغلاق.

ربما يكون الأمر الأكثر فائدة هو أن تخبرك بكيفية اكتشاف ذلك بسرعة.أثناء عرض مربع الحوار، ما عليك سوى فتح FireBug و فحص العناصر التي يمكن أن تغلق النافذة.سترى على الفور كيفية تعريفها وهذا يمنحك ما تحتاجه لتسجيل معالجات النقر.

لذا للإجابة مباشرة على سؤالك، أعتقد أن الإجابة هي "لا" حقًا -- لا يوجد حدث قريب يمكنك ربطه، ولكن "نعم" -- يمكنك ربط كل الطرق لإغلاق مربع الحوار بسهولة إلى حد ما والحصول عليه ما تريد.

يمكنك محاولة التعليمة البرمجية التالية لالتقاط الحدث الختامي للأي بند: صفحة الحوار الخ

$("#dialog").live('pagehide', function(event, ui) {
      $(this).hide();
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top