jquery ui ডায়ালগ: ডায়ালগের সূচনা করার আগে পদ্ধতিগুলি কল করতে পারে না


105

ডায়লগগুলি ভাল কাজ করার সাথে সাথে আমার jquery 1.5 এ একটি অ্যাপ রয়েছে। আমার কাছে প্রচুর লাইভ হ্যান্ডলার রয়েছে, আমি এটি পরিবর্তন করে .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");
...    

এইচটিএমএল কোড

<div id="divDialog">
<div id="divInDialog"></div>
</div>

কেন এমন হতে পারে এমন কোনও ধারণা?

উত্তর:


138

পরিবর্তে এটি চেষ্টা করুন

$(document).ready(function() {
  $("#divDialog").dialog(opt).dialog("open");
});

আপনি এটি করতে পারেন:

var theDialog = $("#divDialog").dialog(opt);
theDialog.dialog("open");

কারণ ডায়লগটি সংরক্ষণ করা হয়নি $('#divDialog'), তবে একটি নতুন ডিভিতে যা ফ্লাইতে তৈরি হয় এবং .dialog(opt)ফাংশন দিয়ে ফিরে আসে ।


5
এটি আমার পক্ষে কাজ করেছে। আমি যখনই এই বার বা এই প্রথমবার খুলতে চাইছি তখনই কি আমাকে ডায়ালগটি আরম্ভ করতে হবে? অনেক সংলাপ আছে। বিকল্পগুলি প্রাথমিক আর সেট করার এবং তারপরে বোতামগুলির মাধ্যমে ডায়লগগুলি খোলার কোনও উপায় নেই?
core-chain.io

6
আমি দেখতে পেলাম যে এই সমাধানটি "ডায়লগটিতে প্রাথমিককরণের আগে কল করতে পারা যায় না; পদ্ধতিটি 'ওপেন' বলার চেষ্টা করে যা ত্রুটি ঘটে যখন একটি ডায়ালগ সফলভাবে খোলা, বন্ধ হয়ে যায় এবং এরপরে ব্যবহারকারীরা দ্বিতীয়বার ডায়ালগটি খোলার চেষ্টা করে । ধন্যবাদ @ জেডএড
স্পেনলাইভস

আপনাকে +1 দিয়েছে, কারণ এটি আমার সমস্যাটিও স্থির করেছে, তবে আপনি কেন দয়া করে ব্যাখ্যা করতে পারেন কেন এটি কাজ করে?
ইগর এল

4
@ ইগোরলাকিক আমি ধরে নিয়েছি যে ডায়ালগ () নিজেই একটি উদাহরণ দেয় যাতে আপনি শৃঙ্খলাবদ্ধ করতে পারেন। অতএব। ডায়ালগ (অপ্ট)। ডায়ালগ ('ওপেন') একটি ডায়ালগ অবজেক্ট (প্রথম কল) ইনস্ট্যান্ট করে এবং তারপরে এটি 'ওপেন' সম্পাদন করে। আমি তখন ধরে নিয়েছি যে calling (ogজেক্ট)। ডায়ালগ (অপ্ট) এবং তারপরে obj (আপত্তি)। ডায়ালগ ('ওপেন') এর পরে জ্যাকোরি অবজেক্টে পৃথক ডায়ালগ অবজেক্টগুলি ইনস্ট্যান্ট করবে, তাই ২ য় প্রথমটির সাথে প্রথমটি দেখতে পাবে না কনফিগারেশন অপশন. ডায়ালগ কোডটি আরও আবিষ্কার না করে অবশ্য নিশ্চিত করে বলা শক্ত, এবং তার জন্য আমার কাছে সময় নেই: ডি
নীওলিও 82

আপনি কী ব্যাখ্যা করার চেষ্টা করেছেন তা ব্যাখ্যা করতে আমার কাছে প্রশ্ন আপডেট হয়েছে।
জোটাবি

23

আপনি যদি 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কারণে কোনও পারফরম্যান্স সমস্যার সমাধান হয়। সমস্ত কথোপকথনে বিশ্বব্যাপী বন্ধ না করে এর চারপাশে কাজ করার সম্ভবত অন্যান্য উপায় রয়েছে।


10

আমি এই ত্রুটিটি পেয়েছি যখন আমি কেবল সমান্তরালভাবে jqueryui লাইব্রেরি আপডেট না করে jquery লাইব্রেরি আপডেট করেছি। আমি jqueryui 1.9.3 সাথে jquery 1.8.3 ব্যবহার করছিলাম। যাইহোক, আমি jquery 1.8.3 থেকে 1.9.1 আপডেট করার পরে আমি উপরের ত্রুটি পেয়েছি। আমি আপত্তিজনক মন্তব্য যখন.close পদ্ধতি লাইনগুলি , তখন এটি সন্ধান না করার বিষয়ে একটি ত্রুটি ছুঁড়েছে.browserjquery লাইব্রেরিতে যা jquery 1.8.3 এ অবচিত হয়েছিল এবং jquery 1.9.1 থেকে সরানো হয়েছিল। সুতরাং মূলত, jquery 1.9.1 লাইব্রেরি jquery ui 1.9.0 লাইব্রেরির সাথে সামঞ্জস্য ছিল না যদিও jquery ui ডাউনলোড পৃষ্ঠায় বলা হয়েছে যে এটি jquery 1.6+ এর সাথে কাজ করে। মূলত, দু'টির বিবিধ সংস্করণ ব্যবহার করার চেষ্টা করার সময় অপরিকল্পিত বাগ রয়েছে। আপনি যদি jqueryui ডাউনলোডের সাথে বান্ডিল হয়ে আসা jquery সংস্করণটি ব্যবহার করেন তবে আমি নিশ্চিত যে আপনি ভাল হয়ে যাবেন, তবে আপনি যখন বিভিন্ন সংস্করণ ব্যবহার শুরু করেন তখন আপনি মারধর করার পথটি বন্ধ করেন এবং এ জাতীয় ত্রুটিগুলি পান। সুতরাং, সংক্ষেপে, এই ত্রুটিটি ভুল-ম্যাচ করা সংস্করণগুলি থেকে (আমার ক্ষেত্রে যাইহোক) is


4
আমি আমার jquery ui সংস্করণটি 1.9.2 এ উন্নীত করেও এই সমস্যাটি সমাধান করেছি এবং তারপরে এটি কার্যকর হয়েছে। সুতরাং, jquery 1.9.1 সঙ্গে jquery ui 1.9.2 উপরের ত্রুটি থেকে মুক্তি পেয়েছে।
উদ্যোক্তা

4

সুতরাং আপনি এটি ব্যবহার:

var theDialog = $("#divDialog").dialog(opt);
theDialog.dialog("open");

এবং আপনি যদি ডায়লগে একটি এমভিসি আংশিক দৃশ্য খোলেন, আপনি সূচীতে একটি গোপন বোতাম এবং জেকিউএইরি ক্লিক ইভেন্টটি তৈরি করতে পারেন:

$("#YourButton").click(function()
{
   theDialog.dialog("open");
   OR
   theDialog.dialog("close");
});

তারপরে আংশিক ভিউ এইচটিএমএল এর ভিতরে আপনি বোতাম বোতাম ট্রিগার ক্লিক করুন:

$("#YouButton").trigger("click")

দেখা হবে.


2

ডায়ালগটি শুরু হওয়ার সাথে সাথে পৃষ্ঠাটি প্রস্তুত হওয়ার autoOpenসাথে সাথে trueযদি আপনি ডায়ালগটি তত্ক্ষণাত খুলতে চান তবে আপনি ডায়ালগের বিকল্পগুলির অবধি পরামিতিটি সেট করতে পারেন :

var opt = {
        autoOpen: true,
        modal: true,
        width: 550,
        height:650,
        title: 'Details'
};

সুতরাং, আপনাকে `$ (" # DivDialog ") কল করতে হবে না dialog ডায়ালগ (" ওপেন ");

ডায়ালগ অবজেক্টটি শুরু করা হলে ডায়ালগটি স্বয়ংক্রিয়ভাবে খোলে is


2

নতুন jQuery UI সংস্করণ আপনাকে ডায়ালগটিতে UI পদ্ধতিগুলি কল করার অনুমতি দেবে না যা শুরু করা হয়নি। কার্যকারণ হিসাবে, আপনি ডায়ালগটি বেঁচে আছে কিনা তা দেখতে নীচের চেকটি ব্যবহার করতে পারেন।

if (modalDialogObj.hasClass('ui-dialog-content')) {
    // call UI methods like modalDialogObj.dialog('isOpen')
} else {
    // it is not initialized yet
}

1

আমার কেস আলাদা, এটি ' এটি ' এর সুযোগের কারণে ব্যর্থ হয় :

//this fails:
$("#My-Dialog").dialog({
  ...
  close: ()=>{
    $(this).dialog("close");
  }
});

//this works:
$("#My-Dialog").dialog({
  ...
  close: function(){
    $(this).dialog("close");
  }
});


0

আমাকে কেবল পৃষ্ঠায় স্ক্রিপ্টম্যানেজার যুক্ত করতে হয়েছিল। ব্যাপারতি পুনঃসংশোধিত.


0

আমার ক্ষেত্রে সমস্যাটি ছিল আমি $("#divDialog").removeData();ডায়ালগের মধ্যে আমার ফর্ম ডেটা পুনরায় সেট করার অংশ হিসাবে ডেকেছিলাম ।

এর ফলে আমি একটি ডেটা কাঠামো মুছতে uiDialogপেরেছি যার অর্থ ডায়লগটি পুনরায় পুনরায় তৈরি করতে হয়েছিল।

আমি .removeData()আরও নির্দিষ্ট মুছে ফেলা প্রতিস্থাপন এবং সবকিছু আবার কাজ শুরু।


-1

আমি এই ত্রুটি বার্তাটি পেয়েছি কারণ আমার পিতামাতার দৃশ্যের পরিবর্তে আংশিক দৃশ্যে ডিভ ট্যাগ ছিল


4
এবং এর সঠিক অর্থ কী?
এএএ

4
এটি খারাপভাবে ব্যাখ্যা করা হলেও বৈধ। এমভিসিতে, আমার আংশিক দৃশ্যে ডায়ালগটির জন্য আমার সাথে ডিভ ট্যাগ ছিল। যখন আমি ধারণকৃত ডিভ ট্যাগটি প্যারেন্ট পৃষ্ঠায় সরিয়েছি তখন ডায়ালগটি সঠিকভাবে কাজ করে।
পলজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.