JQuery নির্দিষ্ট শ্রেণীর উপসর্গের সাথে প্রথম পিতামাতার উপাদান সন্ধান করে


123

আমি প্রথম পিতা বা মাতা পেতে চাই যার একটি নির্দিষ্ট শ্রেণির উপসর্গ রয়েছে, ধরুন:

<div class="div-a3332"> 
  <div class="div-a89892">
    <p>
      <div class="div-b2">
        <div id="divid">hi</div>
      </div>
    </p>
  </div>
</div>

উদাহরণস্বরূপ, আমার বর্তমান উপাদানটি হ'ল #dividএবং আমি প্রথম উপাদানটি খুঁজে পেতে চাই যেখানে বিভাগ উপসর্গ ডিভ-এ রয়েছে। সুতরাং মূলত এটি নির্বাচন করবে:

<div class="div-a89892">

6
স্টপ। একদা ক্লাসে তথ্য সংযুক্ত করার পরিবর্তে একাধিক ক্লাস ব্যবহার করুন। 'ম্যাচিং' নির্বাচকটি ধীর এবং এই নকশাটি কোনও সংশোধন করার জন্য স্কেল করে না। <div class='a'>, তারপরে নিয়ম সরবরাহ করুন div.a। আমি জানি না আপনি কেন divআসলে ক্লাসের নাম রাখছেন।
স্টিফান কেন্ডাল

2
তবুও, ক্লাস-উপসর্গগুলিতে ডেটা মার্জ করবেন না। এটি একটি ভয়ানক নিদর্শন এবং এটি একাধিক ক্লাস সহ সহজেই প্রতিকার করে ied
স্টিফান কেন্ডাল

17
@ স্টেফানকেনডাল: কখনও কখনও আপনি অন্যের তৃতীয় পক্ষের বাজে কথাগুলি নিয়ে व्यवहार করছেন, এবং কখনও কখনও আপনি উত্তরাধিকার অ্যাপ্লিকেশনগুলি সমর্থন করছেন যা আপনি দ্রুত ঠিক করতে পারবেন না। খারাপ নকশা জীবনের সত্য এবং এটি একটি সম্পূর্ণ বৈধ প্রশ্ন।
Nerdmaster

উত্তর:


221

.closest()একটি নির্বাচক সঙ্গে ব্যবহার করুন :

var $div = $('#divid').closest('div[class^="div-a"]');

বিটিডাব্লু, কেন এটিকে নিম্নচালিত করা হয়েছিল তা ধারণা নেই। শ্রেণি-উপসর্গের নির্বাচকটি ভঙ্গুর, তবে এটি কার্যকর হবে
ম্যাট বল

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

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

@Time পরে অপসারণ divউপাদান নির্বাচক: $('#divid').closest('[class^="div-a"]')। @ স্টেফান যেমন মন্তব্য করেছে, তবে আপনার সত্যিকারের একাধিক ক্লাস ব্যবহার করা উচিত।
ম্যাট বল

3
এই নির্বাচকটি একটি অযৌক্তিক পরিমাণ চক্র গ্রহণ করে (তবে এটি এখনও দ্রুত হতে পারে)। আপনার যদি আই 6, আই 7, বা আই 8 সমর্থন করতে হয় তবে আপনার ডোম খুব বড় হলে এটি আপনাকে সত্যই স্ক্রু করতে পারে; যখন নির্দিষ্ট সংখ্যক জেএস ভিএম নির্দেশাবলী কার্যকর করা হয় এবং নির্দিষ্ট সময়ের পরে না হয়ে আইআই "স্ক্রিপ্ট প্রতিক্রিয়া জানায় না" ডায়ালগটি ছুঁড়ে দেয়। আমি স্ক্রিপ্টগুলি দেখেছি যা এই কারণেই 0.1 মিমি ক্র্যাশ ইন্টারনেট এক্সপ্লোরার-এ সম্পূর্ণ হয়।
স্টিফান কেন্ডাল

56

জ্যাকোয়ারি পরে আপনাকে .parents()পদ্ধতিটি সহ পিতামাতাদের সন্ধান করার অনুমতি দেয় ।

তাই আমি ব্যবহার করার পরামর্শ দিচ্ছি:

var $div = $('#divid').parents('div[class^="div-a"]');

এটি নির্বাচকটির সাথে মিলে সমস্ত পিতামাত নোড দেয়। নির্বাচক ব্যবহারের সাথে প্রথম পিতামাতার সাথে মেলে:

var $div = $('#divid').parents('div[class^="div-a"]').eq(0);

এই ধরনের অন্যান্য করে DOM ট্র্যাভেরসাল প্রশ্নের জন্য, উপর ডকুমেন্টেশন খুঁজে বার করো করে DOM ঢোঁড়ন


উত্তরটি বিভ্রান্তিমূলক নয়, এটি কেবল। ক্লোজেস্ট (),।
সানি আর গুপ্ত

9
নিকটতম এটির চেয়ে আরও ভাল সমাধান হিসাবে নিকটতমটি কেবল প্রথম ম্যাচটি খুঁজে পাবে, যেখানে পিতামাতারা সমস্ত ম্যাচ ডিওএম-তে গিয়ে দেখতে পাবেন। স্পষ্টতই নিকটতম ব্যবহার করা আরও দক্ষ, যদিও আমি সম্মত হই, এটি সেরা নামকৃত কার্য নয়।
মোগ 0

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