সম্পূর্ণভাবে কীভাবে একটি ডায়ালগ সরিয়ে ফেলা যায়


133

যখন একটি এজাক্স অপারেশন ব্যর্থ হয়, আমি ত্রুটিগুলি সহ একটি নতুন ডিভি তৈরি করি এবং তারপরে এটি একটি ডায়ালগ হিসাবে দেখায়। ডায়লগটি বন্ধ হয়ে গেলে আমি আবার ডিভিটি সম্পূর্ণরূপে ধ্বংস এবং মুছে ফেলতে চাই। কিভাবে আমি এটি করতে পারব? আমার কোডটি এই মুহুর্তে এরকম কিছু দেখাচ্ছে:

$('<div>We failed</div>')
    .dialog(
    {
        title: 'Error',
        close: function(event, ui)
        {
            $(this).destroy().remove();
        }
    });

আমি যখন এটি চালনা করি তখন ডায়ালগ বাক্সটি সঠিকভাবে প্রদর্শিত হয়, তবে আমি এটিটি বন্ধ করার পরে ডায়ালগটি এখনও এইচটিএমএলে (ফায়ারব্যাগ ব্যবহার করে) প্রদর্শিত হয়। আমি এখানে কি মিস করছি? কিছু ভুলে গেছি?

আপডেট: সবেমাত্র আমার কোডটি ফায়ারব্যাগ কনসোলে আমার একটি ত্রুটি দেয় তা লক্ষ্য করে।

this (এটি) .ডাস্ট্রয়ে কোনও কাজ নয়

কেউ আমাকে সাহায্য করতে সক্ষম?

আপডেট: আমি ঠিক $(this).remove()পরিবর্তে যদি করি , আইটেমটি HTML থেকে সরানো হবে। কিন্তু এটি কি পুরোপুরি ডিওএম থেকে সরিয়ে দেওয়া হয়েছে? বা আমার কি কোনওভাবে প্রথমে সেই ফাংশনটি ধ্বংস করার কথা বলা উচিত?

উত্তর:


261
$(this).dialog('destroy').remove()

এটি ডায়ালগটিকে ধ্বংস করবে এবং তারপরে ডিওএম থেকে ডায়ালগটি সম্পূর্ণরূপে "হোস্টিং" করছিল remove


3
এফএফ এবং ফায়ারব্যাগের সাহায্যে এটি স্পষ্টভাবে ব্যবহার করা হয়েছে। এটি ক্রাশ হবে। কোড. google.com/p/fbug/issues/detail?id=6290 আমার কোডটি কী হয়েছে তা চিত্রিত করার জন্য আমি ঘন্টাগুলি ব্যয় করেছি ...
হেন্ড্রি এইচ।

5
আপনি যদি ডিওএম থেকে একটি ডিভি ব্যবহার করছেন, তাই গতিশীলভাবে তৈরি করা হয়নি, ব্যবহার করুন .empty()। তারপরে আপনি এটিকে পুনরায় ব্যবহার করতে পারেন, যদি আপনি বিষয়গুলি আবার অফকোর্সে পূরণ করেন।
কোয়ালা বিয়ার

2
@ হ্যান্ড্রিএইচ।, ফায়ারফক্স ২৩.০ এবং ফায়ারব্যাগ ১.১১.৪ নিয়ে আর কোনও সমস্যা বলে মনে হচ্ছে না।
সিজেএম

2
Is destroyপ্রয়োজনীয়? উপাদান মুছে ফেললে ডায়লগও নষ্ট হবে না?
দ্রুসকা


10

আপনি এটি অপসারণ করতে চান কেন?

যদি এটি একাধিক দৃষ্টান্ত তৈরি হওয়া রোধ করতে হয় তবে কেবল নীচের পদ্ধতির ব্যবহার করুন ...

$('#myDialog') 
    .dialog( 
    { 
        title: 'Error', 
        close: function(event, ui) 
        { 
            $(this).dialog('close');
        } 
    }); 

এবং ত্রুটি দেখা দিলে আপনি ...

$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');

আমি কেবল ভেবেছিলাম এটি আরও সহজ হবে, যেহেতু এটিতে এজ্যাক্স কল থেকে কী ফিরে আসবে তার উপর নির্ভর করে বিভিন্ন সামগ্রী থাকবে। এবং ডিভিও স্থির নয় যেমন আমি আমার উদাহরণে দেখিয়েছি তবে github.com/nje/jquery-tmpl প্লাগইন দ্বারা রেন্ডার করা হয়েছে । আপনার যদি ডায়লগের বিষয়বস্তুগুলি অদলবদল করার ভাল উপায় থাকে তবে আমি তা দেখতে আগ্রহী হব :)
সুইভিশ

ঠিক আছে, আমার উদাহরণস্বরূপ, আমি ডায়ালগ ডিভের সাথে কেবল একটি স্ট্রিং ডাম্প করার অত্যন্ত সাধারণ বিকল্পটি দিয়েছিলাম: $ ('# মাই ডায়ালগ') h এইচটিএমএল ("ওওপস";); আপনি ডায়ালগ ডিভিও-তে যে কোনও উপ-নিয়ন্ত্রণের বিষয়বস্তু পরিবর্তন করতে এটি পরিবর্তন করতে পারেন।
ফিয়োনা - myaccessible.website

এটি দুর্দান্ত পদ্ধতির নয় কারণ সমস্ত ডায়ালগঅ্যাপশনগুলি #myDialog এ থাকবে যদি না আপনি সেগুলিকে বিশেষভাবে ওভাররাইড করেন। দ্বিতীয় কথোপকথনে (সর্বদা) প্রথম বোতামের মতো বাটন, উচ্চতা ইত্যাদি থাকা উচিত নয়।
মিচিয়েল কর্নিল

8
$(dialogElement).empty();

$(dialogElement).remove();

এটি বাস্তবের জন্য এটি স্থির করে


3

এটি আমার জন্য কাজ করা হয়

$('<div>We failed</div>')
    .dialog(
    {
        title: 'Error',
        close: function(event, ui)
        {
            $(this).dialog("close");
            $(this).remove();
        }
    });

চিয়ার্স!

পিএস: আমার কিছুটা একই সমস্যা ছিল এবং উপরের পদ্ধতির এটি সমাধান হয়েছে।


2
আপনি নিকটতম কলব্যাকের মধ্যে থেকে কাছের পদ্ধতিটি কল করছেন! jQuery UI এর দ্বারা প্রস্তাবিত অসীম লুপটি রোধ করতে যথেষ্ট স্মার্ট, তবে এটি এখনও অপ্রয়োজনীয় এবং আমি অবশ্যই এটি মার্জিত হিসাবে বিবেচনা করব না।
ইলেজার

উত্তরটি লেখার সময়, ছাড়াই $(this).dialog("close");, ডায়ালগটি কেবল সরে যায় না। jQuery সময়ে খুব অদ্ভুত।
ডেবি_আগস্ট

2

একটি কুরুচিপূর্ণ সমাধান যা আমার জন্য কবজির মতো কাজ করে:

$("#mydialog").dialog(
    open: function(){
        $('div.ui-widget-overlay').hide();
        $("div.ui-dialog").not(':first').remove();
}
});

4
এটির কাজ একেবারেই অদ্ভুত। আপনি ডায়লগটি খুলুন এবং তাত্ক্ষণিকভাবে এটিকে সরিয়ে ফেলুন ...
ডেমেন্টিক

1

আপনি ব্যবহার করতে পারেন

$(dialogElement).empty();    
$(dialogElement).remove();

0

আমি আমার সমস্ত জেএস প্রকল্পে এই ফাংশনটি ব্যবহার করি

আপনি এটিকে কল করুন: hideAndResetModals ("# আইডমোডালডায়ালগ")

আপনি সংজ্ঞা দিন যদি:

function hideAndResetModals(modalID)
{
    $(modalID).modal('hide');
    clearValidation(modalID); //You implement it if you need it. If not, you can remote this line
    $(modalID).on('hidden.bs.modal', function () 
    {
        $(modalID).find('form').trigger('reset');  
    });
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.