কোনও jQuery UI ডায়ালগ বক্স খোলা আছে কিনা তা সনাক্ত করুন


97

আমি একটি jQuery UI ডায়ালগ ব্যবহার করছি। যদি এটি খোলা থাকে তবে আমি একটি জিনিস করতে চাই। যদি এটি বন্ধ থাকে তবে আমি আরও একটি কাজ করতে চাই।

আমার প্রশ্নটি হল, কোনও জিকোয়ারি ইউআই ডায়ালগ বক্সটি খোলা আছে কিনা বা কীভাবে সনাক্ত করব?

উত্তর:


173

আপনি যদি ডক্সটি পড়েন

$('#mydialog').dialog('isOpen')

এই পদ্ধতিটি কোনও বুলিয়ান দেয় (সত্য বা মিথ্যা), কোনও জিকুয়েরি অবজেক্ট নয়।


4
দোহ! আমি জানি না যে আমি কীভাবে এটিকে উপেক্ষা করেছি। ধন্যবাদ.
ব্যবহারকারী 208662

4
আপনি কীভাবে কোনও এবং সমস্ত কথোপকথনের জন্য এই পরীক্ষাটি করবেন? বলুন যে আপনার আলাদা আলাদা ইনাইটস এবং অপশন সহ দশটি আলাদা কথোপকথন রয়েছে এবং আপনি পরীক্ষা করতে চান যদি সেগুলির কোনওটিও খোলা থাকে, তবে কোনও নির্দিষ্ট নির্বাচক নয়?
রস

কথোপকথনগুলিতে ক্লাস যুক্ত করুন, তারপরে আপনার আইস ওপেন চেকটিতে নির্বাচকটি পরিবর্তন করুন।
সুইপস্টে

4
প্লাস এছাড়াও: দশ সংলাপ? সম্ভবত দু'একটি উদাহরণ ব্যবহার করে তা হ্রাস করা বিবেচ্য বিষয়
ডেভিড

4
এছাড়াও কথোপকথনটি শুরু করা হয়েছে কিনা তাও পরীক্ষা করে দেখুন $("#mydialog").hasClass("ui-dialog-content")স্ট্যাকওভারফ্লো
শরৎ লেওনার্ড

53

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

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}

4
সর্বশেষ জিকুয়রিতে মিথ্যা প্রত্যাবর্তন করে।
hoyhoy

4
আপনি কীভাবে কোনও এবং সমস্ত কথোপকথনের জন্য এই পরীক্ষাটি করবেন? বলুন যে আপনার আলাদা আলাদা ইনাইটস এবং অপশন সহ দশটি আলাদা কথোপকথন রয়েছে এবং আপনি পরীক্ষা করতে চান যদি সেগুলির কোনওটিও খোলা থাকে, তবে কোনও নির্দিষ্ট নির্বাচক নয়?
রস

4
সম্ভবত $ ("। Ui- ডায়ালগ") এর মতো একটি ফাংশন তৈরি করুন each প্রতিটি (ফাংশন (/ * এই ডায়ালগটি পরীক্ষা করুন * /))?
marcovtwout

21

যদি আপনি কোনও বিশেষ উপাদানটিতে ডায়ালগটি খোলা থাকে কিনা তা পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন:

if ($('#elem').closest('.ui-dialog').is(':visible')) { 
  // do something
}

অথবা আপনি যদি উপাদানটি নিজেই দৃশ্যমান হয় কিনা তা পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন:

if ($('#elem').is(':visible')) { 
  // do something
}

বা ...

if ($('#elem:visible').length) { 
  // do something
}

4
আমি আমার ডিভিটি যদি এটির মতো শুরু না করে তা পরীক্ষা করে দেখি:$dialog.hasClass('ui-dialog-content')
সের্গে

ধন্যবাদ, আমার জন্য কাজ করতে আমি "আইস ওপেন" ব্যবহার করে উপরের উত্তরগুলি পাই না, তবে এটি কার্যকর হয়েছে।
কাইল চেলিস


1

ডায়লগটি এখনও সংজ্ঞায়িত না করা থাকলে ঘটে যাওয়া ত্রুটিটি এড়ানোর জন্য নিক ক্র্যাভারের মন্তব্যটি সবচেয়ে সহজ:

if ($('#elem').is(':visible')) { 
  // do something
}

আপনার সিএসএসে প্রথমে দৃশ্যমানতাটি সেট করা উচিত, সহজভাবে:

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