jQuery UI - বাইরে ক্লিক করলে ডায়ালগ বন্ধ করুন


113

আমার কাছে একটি jQuery ইউআই ডায়ালগ রয়েছে যা নির্দিষ্ট উপাদানগুলিতে ক্লিক করা হলে প্রদর্শিত হয়। এই সংক্রামক উপাদানগুলি বা ডায়ালগটি ছাড়া অন্য কোনও জায়গায় যদি ক্লিক ঘটে তবে আমি ডায়ালগটি বন্ধ করতে চাই।

কথোপকথন খোলার কোড এখানে:

$(document).ready(function() {
    var $field_hint = $('<div></div>')
        .dialog({
            autoOpen: false,
            minHeight: 50,
            resizable: false,
            width: 375
        });

    $('.hint').click(function() {
        var $hint = $(this);
        $field_hint.html($hint.html());
        $field_hint.dialog('option', 'position', [162, $hint.offset().top + 25]);
        $field_hint.dialog('option', 'title', $hint.siblings('label').html());
        $field_hint.dialog('open');
    });
    /*$(document).click(function() {
        $field_hint.dialog('close');
    });*/
});

আমি যদি শেষ অংশটি আপত্তিহীন করি তবে ডায়ালগটি কখনই খোলে না। আমি ধরে নিলাম কারণ ডায়ালগটি খোলার একই ক্লিকটি এটি আবার বন্ধ করে দিচ্ছে।


চূড়ান্ত কার্যকরী কোড
নোট: এটি jQuery বাইরের ইভেন্ট প্লাগইন ব্যবহার করছে

$(document).ready(function() {
    // dialog element to .hint
    var $field_hint = $('<div></div>')
            .dialog({
                autoOpen: false,
                minHeight: 0,
                resizable: false,
                width: 376
            })
            .bind('clickoutside', function(e) {
                $target = $(e.target);
                if (!$target.filter('.hint').length
                        && !$target.filter('.hintclickicon').length) {
                    $field_hint.dialog('close');
                }
            });

    // attach dialog element to .hint elements
    $('.hint').click(function() {
        var $hint = $(this);
        $field_hint.html('<div style="max-height: 300px;">' + $hint.html() + '</div>');
        $field_hint.dialog('option', 'position', [$hint.offset().left - 384, $hint.offset().top + 24 - $(document).scrollTop()]);
        $field_hint.dialog('option', 'title', $hint.siblings('label').html());
        $field_hint.dialog('open');
    });

    // trigger .hint dialog with an anchor tag referencing the form element
    $('.hintclickicon').click(function(e) {
        e.preventDefault();
        $($(this).get(0).hash + ' .hint').trigger('click');
    });
});

উত্তর:


31

পরীক্ষা করে দেখুন jQuery এর বাইরে ঘটনাবলী প্লাগ ইন

আপনাকে করতে দেয়:

$field_hint.bind('clickoutside',function(){
    $field_hint.dialog('close');
});

আমি একই আচরণ পাচ্ছি, যখন $ ('। ইঙ্গিত') উপাদানগুলি ক্লিক করা হয় তখন ইঙ্গিতটি প্রদর্শিত হবে না। এই উপাদানগুলি ডায়ালগের 'বাইরের'।
সনি

ডায়ালগটি খোলা থাকলে আপনি কেবল বাইরের ক্লিক সম্পর্কেই যত্নবান হন। সুতরাং এটি খোলার পরে কেবল এটি আবদ্ধ করুন।
পিটারসেনডিডআইটি

3
আমি ইভেন্টের উপর ভিত্তি করে ফিল্টারিং সম্পর্কে অন্য জায়গায় পড়েছি এবং এটি সমস্যার সমাধান করেছে: গ্রুপ. google.com/group/jquery-ui/msg/a880d99138e1e80d
সনি

ডকুমেন্টটিতে ডায়লগটি বেশ কয়েকবার পুনরায় ব্যবহৃত হয়েছে, তাই ডায়ালগটি বন্ধ করার সময় আমাকে আনবাইন্ড করার একটি উপায় থাকতে হবে। আমি ফিল্টারিং একটি সহজ সমাধান বলে মনে করি।
সনি

159

এত দিন পরে এটিকে টেনে আনার জন্য দুঃখিত তবে আমি নীচে ব্যবহার করেছি। কোন অসুবিধা? খোলা ফাংশনটি দেখুন ...

$("#popup").dialog(
{
    height: 670,
    width: 680,
    modal: true,
    autoOpen: false,
    close: function(event, ui) { $('#wrap').show(); },
    open: function(event, ui) 
    { 
        $('.ui-widget-overlay').bind('click', function()
        { 
            $("#popup").dialog('close'); 
        }); 
    }
});

18
আসলে এটি কেবলমাত্র ইউআই উইন্ডোটি মডেল হলে কাজ করবে। আপনি যদি
কোনও মডেল

37
খুব সুন্দর. আমি কেবল এটিকে এটিতে পরিবর্তন করেছি যাতে আইডি রেফারেন্সটি স্পষ্টভাবে আমাকে সেট করতে হবে না:$('.ui-widget-overlay').bind('click', function () { $(this).siblings('.ui-dialog').find('.ui-dialog-content').dialog('close'); });
জেমস ম্যাককমার্যাক

1
আমার এটা ভাল লেগেছে. এমন কোনও মামলা রয়েছে যেখানে আপনি এটি মডেলটি চান না তবে এখনও বন্ধ করতে বাইরে ক্লিক করতে চান? আমাকে বোঝায় না (আমি মডেলগুলির সাথে অনুমান করি যে আপনি বাইরের / নীচের উপাদানগুলির উপর ঝাঁকুনি হারাবেন)।
নিক স্পেস্ক

3
@ নিকস্পেসেক - যখন এটি মডেল না হয় আমি কেবল একটি ক্লিক দিয়ে কোনও ক্ষেত্রের দিকে ফোকাস সেট করতে, একটি নতুন ডায়ালগ ইত্যাদি খুলতে পারি। একটি মডেল ডায়লগের সাথে আমাকে দুটি ক্লিক ব্যবহার করতে হবে: একটি এটি বন্ধ করতে এবং অন্যটি পরবর্তী ক্রিয়াটি করতে।
সনি

1
ধন্যবাদ! আপনি jQuery লাইভ বুদবুদ সুবিধা নিতে পারেন। $ ('বডি')। এ ('ক্লিক করুন', '.ুই-উইজেট-ওভারলে', বন্ধ);
কোয়াং ভ্যান

78

অন্য প্লাগইন ব্যবহার করতে ভুলবেন না:

বাইরের পপিনে ক্লিক করার সময় একটি jquery UI ডায়ালগ বন্ধ করার জন্য এখানে 3 টি পদ্ধতি:

যদি ডায়ালগটি মডেল হয় / পটভূমি ওভারলে থাকে: http://jsfiddle.net/jasonday/6FGqN/

jQuery(document).ready(function() {
    jQuery("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 100,
        modal: true,
        open: function(){
            jQuery('.ui-widget-overlay').bind('click',function(){
                jQuery('#dialog').dialog('close');
            })
        }
    });
}); 

ডায়ালগটি যদি নন-মডেল পদ্ধতি 1: পদ্ধতি 1: http://jsfiddle.net/jasonday/xpkFf/

 // Close Pop-in If the user clicks anywhere else on the page
                     jQuery('body')
                      .bind(
                       'click',
                       function(e){
                        if(
                         jQuery('#dialog').dialog('isOpen')
                         && !jQuery(e.target).is('.ui-dialog, a')
                         && !jQuery(e.target).closest('.ui-dialog').length
                        ){
                         jQuery('#dialog').dialog('close');
                        }
                       }
                      );

নন-মডেল ডায়ালগ পদ্ধতি 2: http://jsfiddle.net/jasonday/eccKr/

  $(function() {
            $( "#dialog" ).dialog({
                autoOpen: false, 
                minHeight: 100,
                width: 342,
                draggable: true,
                resizable: false,
                modal: false,
                closeText: 'Close',
                  open: function() {
                      closedialog = 1;
                      $(document).bind('click', overlayclickclose);
                  },
                  focus: function() {
                      closedialog = 0;
                  },
                  close: function() {
                      $(document).unbind('click');
                  }



        });

         $('#linkID').click(function() {
            $('#dialog').dialog('open');
            closedialog = 0;
        });

         var closedialog;

          function overlayclickclose() {
              if (closedialog) {
                  $('#dialog').dialog('close');
              }

              //set to one because click on dialog box sets to zero
              closedialog = 1;
          }


  });

2
গ্রেট! আমি মডেল ডায়লগের জন্য ওপেন অপশন ফাংশনটি সামান্য পরিবর্তন করেছি, সুতরাং উপাদানটির স্পষ্টভাবে নামকরণ করার দরকার নেই। open : function () { $('.ui-widget-overlay').on('click', function () { $(this).parents("body").find(".ui-dialog-content").dialog("close"); }); }
মেরিডিয়াস

দ্রষ্টব্য যে # 2, .is ('। Ui- ডায়ালগ, একটি') এর জন্য .is ('। Ui- কথোপকথন, যাই হোক না কেন আপনি ক্লিক করুনআপনিডায়ালগ')
personne3000

@ জেসন কমাটির কারণে, আমার মনে হয় এই লাইনটি আসলে "ইউআই-ডায়ালগ, বা পৃষ্ঠার কোনও লিঙ্ক নয়" বলছে। যদি আমি আপনার উদাহরণের "ওপেন ডায়লগ" লিঙ্কটি <স্প্যান> তে পরিবর্তন করি তবে উইন্ডো ইভেন্টটি শেষ হওয়ার সাথে সাথে ডায়ালগটি খোলার সাথে সাথেই বন্ধ হয়ে যাবে, এ কারণেই আমি মনে করি যে আপনি যে আইটেমটি খোলার জন্য ক্লিক করেছেন তা বাদ দিতে হবে I ডায়ালগ। আমি বুঝতে পারছি না কেন আপনাকে সংলাপে লিঙ্কগুলি উল্লেখ করতে হবে?
personne3000

@ personne3000 - আসলে আপনি প্রসঙ্গে সঠিক, নির্বাচক উভয়ই বেছে নিচ্ছেন। আমি কেন এটি যুক্ত করেছিলাম তা মনে করার চেষ্টা করছি, কারণ আমার অবশ্যই একটি নির্দিষ্ট কারণ থাকতে হবে যা আমি এই মুহুর্তে মনে রাখছি না।
জেসন

@ জেসন একাধিক কথোপকথনের সাথে দ্বন্দ্ব এড়ানোর জন্য আপনি নাম স্পিড ইভেন্টগুলি ব্যবহার করতে পারেনclick.myNamespace
ক্রিস্টোফ রাউসি

17

কেবল এই গ্লোবাল স্ক্রিপ্টটি যুক্ত করুন, যা কেবলমাত্র আউটসাইটে ক্লিক করে সমস্ত মডেল ডায়ালগ বন্ধ করে দেয়।

$(document).ready(function()
{
    $(document.body).on("click", ".ui-widget-overlay", function()
    {
        $.each($(".ui-dialog"), function()
        {
            var $dialog;
            $dialog = $(this).children(".ui-dialog-content");
            if($dialog.dialog("option", "modal"))
            {
                $dialog.dialog("close");
            }
        });
    });;
});

আমি কোনও মডেল ডায়ালগ ব্যবহার করছি না। সর্বাধিক ভোটের উত্তর এখানে মডেল সংলাপগুলির জন্য।
সনি

একই ডায়লগটি একই পৃষ্ঠায় একাধিকবার ব্যবহার করার সময় এটি কেবলমাত্র একমাত্র উপায় হ'ল এটি যদি কেবল ওপেন ফাংশনে আবদ্ধ থাকে তবে এটি একবারে কাজ করবে। এই দুর্দান্ত ধারণা জন্য ধন্যবাদ!
ম্যাডাহোপে

এখানে আমার:$(document).on('click', '.ui-widget-overlay', function() { $('#'+$('.ui-dialog-content')[0].id).dialog('close'); });
মিঃ 5

10
$(".ui-widget-overlay").click (function () {
    $("#dialog-id").dialog( "close" );
});

ক্রিয়াকলাপে উপরের কোডটি দেখাচ্ছে ফিডাল


আমি এটি একবার দেখুন। ধন্যবাদ জেন!
সনি

8

আমাকে দুটি অংশ করতে হয়েছিল। প্রথমে বাইরের ক্লিক হ্যান্ডলার:

$(document).on('click', function(e){
    if ($(".ui-dialog").length) {
        if (!$(e.target).parents().filter('.ui-dialog').length) {
            $('.ui-dialog-content').dialog('close');
        }
    }
}); 

এটি dialog('close')জেনেরিক ui-dialog-contentশ্রেণিতে কল করে এবং তাই ক্লিকের মধ্যে একটির উত্স না উঠলে সমস্ত কথোপকথন বন্ধ হয়ে যাবে । ওভারলে .ui-dialogবক্সের অংশ না হওয়ায় এটি মডেল সংলাপগুলির সাথেও কাজ করবে ।

সমস্যা হল:

  1. একটি ডায়ালগের বাইরের ক্লিকের কারণে বেশিরভাগ সংলাপ তৈরি হয়
  2. এই ক্লিকগুলি সেই ক্লিকগুলি ডায়ালগ তৈরি করার পরে এবং দস্তাবেজটিতে বুদবুদ হওয়ার পরে চলে, তাই এটি অবিলম্বে সেগুলি বন্ধ করে দেয়।

এটি ঠিক করার জন্য, আমাকে ক্লিক ক্লিককারীদের স্টপপ্রোপেশন যোগ করতে হয়েছিল:

moreLink.on('click', function (e) {
    listBox.dialog();
    e.stopPropagation(); //Don't trigger the outside click handler
});

আমি যে সমাধানটি ব্যবহার করছি তার চেয়ে এটি সহজ শোনায়। আমি এটি চেষ্টা করে দেখতে হবে।
সনি

এই সমাধানটি আমি নিজেই ভেবেছিলাম, তবে আমার এক-লাইনার:$('body').on('click', '.ui-widget-overlay', function () { $('#myDialog').dialog('close'); });
স্টাইলফেল

5

এই প্রশ্নটি কিছুটা পুরানো, তবে যদি কেউ কোনও কথোপকথনটি বন্ধ করতে চায় যা ব্যবহারকারীর কোথাও ক্লিক করে তখন মডেল নয়, আপনি এটি ব্যবহার করতে পারেন যা আমি জিকুয়েরি ইউআই মাল্টিলেসলেট প্লাগইন থেকে নিয়েছি । মূল সুবিধাটি হ'ল ক্লিকটি "হারানো" নয় (যদি ব্যবহারকারী কোনও লিঙ্ক বা একটি বোতামে ক্লিক করতে চান তবে ক্রিয়াটি সম্পন্ন হবে)।

$myselector.dialog({
            title: "Dialog that closes when user clicks outside",
            modal:false,
            close: function(){
                        $(document).off('mousedown.mydialog');
                    },
            open: function(event, ui) { 
                    var $dialog = $(this).dialog('widget');
                    $(document).on('mousedown.mydialog', function(e) {
                        // Close when user clicks elsewhere
                        if($dialog.dialog('isOpen') && !$.contains($myselector.dialog('widget')[0], e.target)){
                            $myselector.dialog('close');
                        }            
                    });
                }                    
            });

আমাকে var $dialog = $(this).dialog('widget');অন-ক্লিক ইভেন্ট হ্যান্ডলারের ভিতরে যেতে হয়েছিল
স্টেফান হ্যাবারেল

1
@ মেলানিয়া, আমি মনে করি আপনার সমাধান অন্যদের চেয়ে বেশি কার্যকর। এক লোক জন্য প্লাগ-ইন তৈরি করা 'jqui ডায়ালগ' আপনার পদ্ধতির উপর ভিত্তি করে - GitHub এ JS
resnyanskiy

5

কোনও অতিরিক্ত প্লাগ-ইন ব্যবহার না করে আপনি এটি করতে পারেন

var $dialog= $(document.createElement("div")).appendTo(document.body);
    var dialogOverlay;

    $dialog.dialog({
        title: "Your title",
        modal: true,
        resizable: true,
        draggable: false,
        autoOpen: false,
        width: "auto",
        show: "fade",
        hide: "fade",
        open:function(){
            $dialog.dialog('widget').animate({
                width: "+=300", 
                left: "-=150"
            });

//get the last overlay in the dom
            $dialogOverlay = $(".ui-widget-overlay").last();
//remove any event handler bound to it.
            $dialogOverlay.unbind();
            $dialogOverlay.click(function(){
//close the dialog whenever the overlay is clicked.
                $dialog.dialog("close");
            });
        }
    });

এখানে $ ডায়ালগটি ডায়ালগ। আমরা মূলত যা করছি তা হ'ল শেষ ওভারলে উইজেটটি পাওয়া যায় যখনই এই ডায়লগটি খোলা হয় এবং যে কোনও সময় ওভারলে ক্লিক করার সাথে সাথে ডায়ালগটি বন্ধ করতে একটি ক্লিক হ্যান্ডলারের সাথে বাঁধাই বন্ধ করা যায় $


আমি মনে করি এটি কোনও মডেল ডায়ালগের জন্য অন্যান্য সমাধানের মতো। আমার প্রশ্নটি ছিল নন-মডেল সংলাপগুলির জন্য।
সনি

5

বাইরের ইভেন্ট প্লাগইনটির প্রয়োজন নেই ...

কেবলমাত্র .ui-উইজেট-ওভারলে ডিভের জন্য একটি ইভেন্ট হ্যান্ডলার যুক্ত করুন:

jQuery(document).on('click', 'body > .ui-widget-overlay', function(){
     jQuery("#ui-dialog-selector-goes-here").dialog("close");
     return false;
});

কেবল নিশ্চিত হয়ে নিন যে আপনি jQuery ইউআই ডায়ালগের জন্য যে কোনও নির্বাচককে ব্যবহার করেছেন, এটি বন্ধ করার জন্যও বলা হয়েছে .. অর্থাৎ # ইউআই-সংলাপ-নির্বাচক-এখানে চলে গেছে


মডেল ডায়লগ বন্ধ করার জন্য বেশ কয়েকটি সমাধান ইতিমধ্যে প্রস্তাব করা হয়েছে। আমার কথোপকথনটি নন-মডেল এবং সুতরাং এর কোনও ওভারলে নেই।
সনি 18

আপনি কেবল ক্লিক ইভেন্টটিকে কেবল বডি ট্যাগ বা ডিভ রেপারে আবদ্ধ করুন এবং মোডালের পরিবর্তে এটি আপনার ক্লিক ইভেন্ট ট্রিগার হিসাবে ব্যবহার করুন।
জোনাথন মারজুলো

হ্যাঁ. এটিই মূলত আমার সমাধানটি করে। এটিতে কথোপকথনের মধ্যে ক্লিকগুলিও বাদ দিতে হয়।
সনি

3

এটি jQuery UI ব্যবহার করে না, তবে jQuery ব্যবহার করে এবং যারা jQuery UI কোনও কারণেই ব্যবহার করছেন না তাদের জন্য কার্যকর হতে পারে। এটি পছন্দ করুন:

function showDialog(){
  $('#dialog').show();
  $('*').on('click',function(e){
    $('#zoomer').hide();
  });
}

$(document).ready(function(){

  showDialog();    

});

সুতরাং, একবার আমি একটি কথোপকথন দেখানোর পরে, আমি একটি ক্লিক হ্যান্ডলার যুক্ত করি যা কেবল কোনও কিছুর উপর প্রথম ক্লিকের জন্য দেখায়।

এখন, যদি আমি # ডায়ালগ এবং এর বিষয়বস্তুতে যে কোনও কিছুতে ক্লিক উপেক্ষা করতে পারি তবে এটি আরও ভাল লাগবে, কিন্তু যখন আমি $ ('*') $ (': নয় ("# কথোপকথন, # কথোপকথন *") দিয়ে স্যুইচ করার চেষ্টা করেছি '), এটি এখনও # ডায়ালগ ক্লিকগুলি সনাক্ত করেছে।

যাইহোক, আমি একে পুরোপুরি কোনও ফটো লাইটবক্সের জন্য ব্যবহার করছিলাম, সুতরাং এটি সেই উদ্দেশ্যে ঠিক আছে okay


2

প্রদত্ত উদাহরণ (গুলি) আইডি '# ডায়ালগ' সহ একটি ডায়ালগ ব্যবহার করে, আমার কোনও সমাধান দরকার যা কোনও ডায়ালগ বন্ধ করে দেয়:

$.extend($.ui.dialog.prototype.options, {
    modal: true,
    open: function(object) {
        jQuery('.ui-widget-overlay').bind('click', function() {              
            var id = jQuery(object.target).attr('id');
            jQuery('#'+id).dialog('close');
        })
    }
});

প্রোটোটাইপ ব্যবহারের পরামর্শের জন্য আমার সহকর্মী ইউরি আরকেস্তেজনকে ধন্যবাদ।


2

এটিই একমাত্র পদ্ধতি যা আমার অন-মডেল ডায়ালগের জন্য আমার পক্ষে কাজ করেছিল

$(document).mousedown(function(e) {
    var clicked = $(e.target); // get the element clicked
    if (clicked.is('#dlg') || clicked.parents().is('#dlg') || clicked.is('.ui-dialog-titlebar')) {
        return; // click happened within the dialog, do nothing here
    } else { // click was outside the dialog, so close it
        $('#dlg').dialog("close");
    }
});

সমস্ত ক্রেডিট অ্যাক্সলে যায় বন্ধ করতে
নন-মডেল ডায়ালগের বাইরে ক্লিক করুন


1

আপনার আগ্রহী তাদের জন্য আমি একটি জেনেরিক প্লাগইন তৈরি করেছি যা কোনও মোডাল বা নন-মডেল ডায়ালগ কিনা তার বাইরে ক্লিক করার সময় ডায়লগটি বন্ধ করতে সক্ষম করে। এটি একই পৃষ্ঠায় এক বা একাধিক কথোপকথন সমর্থন করে।

এখানে আরও তথ্য: http://www.coheractio.com/blog/closing-jquery-ui-dialog-widget-when-clicking-outside

লরেন্ট


1

আমি এখানে পোস্ট করা একটি ভিত্তিতে এই সমাধানটি ব্যবহার করি:

var g_divOpenDialog = null;
function _openDlg(l_d) {

  // http://stackoverflow.com/questions/2554779/jquery-ui-close-dialog-when-clicked-outside
  jQuery('body').bind(
   'click',
   function(e){
    if(
      g_divOpenDialog!=null 
      && !jQuery(e.target).is('.ui-dialog, a')
      && !jQuery(e.target).closest('.ui-dialog').length
    ){
      _closeDlg();
    }
   }
  );

  setTimeout(function() {
    g_divOpenDialog = l_d;
    g_divOpenDialog.dialog();
  }, 500);
}
function _closeDlg() {
  jQuery('body').unbind('click');
  g_divOpenDialog.dialog('close');
  g_divOpenDialog.dialog('destroy');
  g_divOpenDialog = null;
}

1

এক পৃষ্ঠায় পূর্বরূপ মডেল তৈরি করার সময় আমার একই সমস্যা ছিল। অনেকগুলি গুগল করার পরে আমি এটি খুব দরকারী সমাধানটি পেয়েছি। ইভেন্ট এবং টার্গেট সহ এটি ক্লিক করছে কোথায় ক্লিক হয়েছে এবং তার উপর নির্ভর করে ক্রিয়াটি ট্রিগার করে বা কিছুই করে না।

কোড স্নিপেট লাইব্রেরি সাইট

$('#modal-background').mousedown(function(e) {
var clicked = $(e.target);  
if (clicked.is('#modal-content') || clicked.parents().is('#modal-content')) 
    return; 
} else {  
 $('#modal-background').hide();
}
});

0

এটি খুব সহজ আসলে আপনার কোনও প্লাগইন দরকার নেই, কেবল জ্যাকেওয়ারি বা আপনি এটি সহজ জাভাস্ক্রিপ্ট দিয়ে করতে পারেন।

$('#dialog').on('click', function(e){
  e.stopPropagation();
});
$(document.body).on('click', function(e){
  master.hide();
});

0

পুরো ডিওএম থেকে $ ('। যে কোনও নির্বাচক') ব্যবহার করে ডায়লগ স্টাফ সন্ধান করা এত উজ্জ্বল বলে আমি মনে করি না।

চেষ্টা

$('<div />').dialog({
    open: function(event, ui){
        var ins = $(this).dialog('instance');
        var overlay = ins.overlay;
        overlay.off('click').on('click', {$dialog: $(this)}, function(event){
            event.data.$dialog.dialog('close');
        });
    }
});

আপনি যে সংলাপটির সাথে সম্পর্কিত সেটি থেকে আপনি সত্যই ওভারলে পেয়ে যাচ্ছেন, জিনিসগুলি কখনই এইভাবে ভুল হবে না।


এটি একটি মডেল সংলাপ জন্য? আমার ওপিটি নন-মডেল সম্পর্কে, সুতরাং কোনও ওভারলে নেই।
সনি

0

নিম্নলিখিত কোডের সাহায্যে আপনি ডায়ালগের 'ক্লোজ' বাটনে ক্লিক করতে পারেন (নিজের ডায়ালগের নামের জন্য 'MY_DIALOG' স্ট্রিংটি পরিবর্তন করুন)

$("div[aria-labelledby='ui-dialog-title-MY_DIALOG'] div.ui-helper-clearfix a.ui-dialog-titlebar-close")[0].click();

0

স্মার্ট কোড: আমি নিম্নলিখিত কোডগুলি ব্যবহার করছি যাতে প্রতিটি জিনিস পরিষ্কার এবং পাঠযোগ্য হয় remains আউট সাইড বডি ডায়ালগ বক্সটি বন্ধ করে দেবে।

$(document).ready(function () {
   $('body').on('click', '.ui-widget-overlay', closeDialogBox);
});

function closeDialogBox() {
    $('#dialog-message').dialog('close');
}

0

আমি এই কোডটি ব্যবহার করে শেষ করেছি যা পৃষ্ঠার যে কোনও মুক্ত কথোপকথনে কাজ করা উচিত, সরঞ্জামদ্বারগুলিতে ক্লিকগুলি উপেক্ষা করা এবং ডায়ালগের সংস্থানগুলি বন্ধ করার সংস্থানগুলিও পরিষ্কার করে দেওয়া উচিত।


        $(document).mousedown(function(e) {
            var clicked = $(e.target); // get the element clicked
            if (clicked.is('.ui-dialog-content, .ui-dialog-titlebar, .ui-tooltip') || clicked.parents().is('.ui-dialog-content, .ui-dialog-titlebar, .ui-tooltip')) {
                return; // click happened within the dialog, do nothing here
            } else { // click was outside the dialog, so close it
                $('.ui-dialog-content').dialog("close");
                $('.ui-dialog-content').dialog("destroy");
                $('.ui-dialog-content').detach();

            }
        });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.