JQuery ব্যবহার করে কোনও পূর্বপুরুষের ক্লাস রয়েছে কিনা তা পরীক্ষা করুন


156

JQuery- তে কোনও উপায় আছে কিনা তা পরীক্ষা করার জন্য কোনও পিতা-মাতা, গ্র্যান্ড-পিতামাতা, গ্রেট-গ্র্যান্ড-পিতামাতার ক্লাস রয়েছে কিনা।

আমার একটি মার্কআপ কাঠামো রয়েছে যা আমাকে কোডে এই ধরণের কাজ করতে ছেড়ে দিয়েছে:

$(elem).parent().parent().parent().parent().hasClass('left')

তবে কোড পাঠযোগ্যতার জন্য আমি এই ধরণের জিনিস এড়াতে চাই। "কোনও পিতা-মাতা / দাদু / পিতামহ-বৃদ্ধ-পিতামাতার এই শ্রেণি আছে" বলার কোনও উপায় আছে কি?

আমি jQuery 1.7.2 ব্যবহার করছি।


stackoverflow.com/questions/16863917/… - যদি কেউ jQuery ছাড়াই এটি করতে চায়
রবার্ট নাইস্টরোজ

উত্তর:


303
if ($elem.parents('.left').length) {

}

19
ধন্যবাদ, ঠিক আমার যা দরকার! রেকর্ডের জন্য, .lengthসত্যবাদী মূল্য হিসাবে বিবেচনা করার অনুশীলনটি জেএসে বেশ বিস্তৃত হলেও এটি আরও পরিষ্কার এবং বোঝা সহজ.length > 0
ডুলিও

2
এখানে jQuery .parents () ডকুমেন্টেশনের লিঙ্কটি রয়েছে
এইচ ডগ

75

উপাদান পূর্বপুরুষদের জন্য ফিল্টার করার বিভিন্ন উপায় রয়েছে।

if ($elem.closest('.parentClass').length /* > 0*/) {/*...*/}
if ($elem.parents('.parentClass').length /* > 0*/) {/*...*/}
if ($elem.parents().hasClass('parentClass')) {/*...*/}
if ($('.parentClass').has($elem).length /* > 0*/) {/*...*/}
if ($elem.is('.parentClass *')) {/*...*/} 

সাবধান , closest() পদ্ধতি নির্বাচনের জন্য চেক করার সময় উপাদান নিজেই অন্তর্ভুক্ত।

বিকল্পভাবে, যদি আপনার সাথে মেলে একটি অনন্য নির্বাচক$elem , উদাহরণস্বরূপ #myElem, আপনি ব্যবহার করতে পারেন:

if ($('.parentClass:has(#myElem)').length /* > 0*/) {/*...*/}
if(document.querySelector('.parentClass #myElem')) {/*...*/}

আপনি যদি কেবল স্টাইলিংয়ের উদ্দেশ্যে এর পূর্বপুরুষের শ্রেণীর উপর নির্ভর করে কোনও উপাদানটির সাথে মিল করতে চান তবে কেবল একটি সিএসএস বিধি ব্যবহার করুন :

.parentClass #myElem { /* CSS property set */ }

2
আমি বলার উদ্যোগ নিতে পারি (এটি পরীক্ষা না করেই) যে এই পদ্ধতিটি আরও ভাল। এলেম.প্যারেন্টস পুরো প্যারেন্ট ডোম স্ট্রুকুত্রে অতিক্রম করবে, যেখানে সেই উপাদানটির সাথে নিকটতম পিতামাতাকে খুঁজে পাওয়ার পরে সবচেয়ে কাছের (সম্ভবত) থামানো উচিত। এটি একটি অশিক্ষিত অনুমান। আমি সাধারণত নিকটতম () ব্যবহার করি। আমার ব্লগের জন্য গবেষণার জন্য আমি একটি নতুন বিষয় খুঁজে পেয়েছি বলে মনে হচ্ছে! : পি
দেউদওয়াদ

@ দেদেওয়াদ হ্যাঁ এটি তবে এটি সাম্প্রতিককালে। আমার মানে পুরানো জেকিউ সংস্করণ, এএফাইক, এটি ছিল না। নিকটতম () ব্যবহার করে প্রথম মিলিত পিতামাতার সাথে পিতা-মাতার লুপটি ভাঙ্গেনি, তবে এখন তা। (কোন জেকিউ সংস্করণ থেকে জানেন না তবে আমি এই বিবৃতিতে সঠিক হওয়া নিশ্চিত)
এ ওল্ফ

জেনে রাখা ভাল, তথ্যের জন্য ধন্যবাদ। অদ্ভুত যে তারা প্রথম সংস্করণটি থেকে বিরতি তৈরি করত না।
দুদেবাদ

2
যখন সেখানে কোনও পিতামাতাকে খুঁজে পাওয়া যায় না, তখন পিতামাতা () নিকটতম () jsperf.com/closest-vs-parents-foobar থেকে
অ্যালেক্স

3
@ অ্যালেক্স বেশিরভাগই ইনপুটটির জন্য হস্তক্ষেপ করছে! BTW, পুনরায় পড়া প্রশ্ন Is there any way in jQuery to check if any parent,..., closest()উপাদান নিজেই জন্য চেক তাই এই সত্যিই প্রশ্নের উত্তর হয় না, অপ করতে পারতাম! Explecitely উপাদান নিজেই বাদ দেওয়ার, তাই আগে, উত্তর ব্যবহার করতে ছিল.parents()
উ: উলফ

7

আপনি parentsনির্দিষ্ট .classনির্বাচক সহ পদ্ধতিটি ব্যবহার করতে পারেন এবং তাদের কোনওটির সাথে এটির মিল রয়েছে কিনা তা পরীক্ষা করতে পারেন:

if ($elem.parents('.left').length != 0) {
    //someone has this class
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.