jQuery: পিতামাতার একটি নির্দিষ্ট সন্তানের কাছে কীভাবে যাবেন?


92

সরলীকৃত উদাহরণ দেওয়ার জন্য, আমি নীচের ব্লকটি পৃষ্ঠায় প্রচুর বার বার বার পেয়েছি (এটি গতিশীলভাবে উত্পন্ন হয়েছে):

<div class="box">
   <div class="something1"></div>
   <div class="something2">
      <a class="mylink">My link</a>
   </div>
</div>

ক্লিক করা হলে আমি এর সাথে লিঙ্কটির পিতামাতার কাছে যেতে পারি:

$(".mylink").click(function() {
   $(this).parents(".box").fadeOut("fast");
});

তবে ... আমাকে <div class="something1">সেই বিশেষ পিতামাতার কাছে যেতে হবে।

মূলত, কেউ কি আমাকে বলতে পারেন যে সরাসরি তা উল্লেখ না করে উচ্চ স্তরের সহোদরকে কীভাবে রেফার করতে হবে? একে বড় ভাই বলি। বড় ভাইয়ের শ্রেণির নামের প্রত্যক্ষ রেফারেন্সের ফলে পৃষ্ঠাতে থাকা উপাদানটির প্রতিটি উদাহরণ ম্লান হয়ে যাবে - যা পছন্দসই প্রভাব নয়।

আমি চেষ্টা করেছিলাম:

parents(".box .something1") ... no luck.
parents(".box > .something1") ... no luck.
siblings() ... no luck.

যে কেউ? ধন্যবাদ


অনুরাগের উত্তরটি সঠিক বলে মনে হচ্ছে না-এটি অবশ্যই আমাকে থামিয়েছে এবং ভাবতে বাধ্য করেছে - তবে এটি আপনার কোডটিতে একটি নির্লজ্জ টাইপ দেখিয়েছে যা আপনার নির্বাচককে ব্যর্থ করে তুলছে। জিউকিউরিতে নির্বাচকটি .parent() নেই .parents()
ডেভিড বলেছেন মনিকা

@ রাইসোবল: ভুল। api.jquery.com/parents
স্ল্যাक्स

@ রাইসোবোল ... পিতা বা মাতা () আমাকে ডিভ কিছু দেবে 2, তাই ডিভ বাক্সে যাওয়ার জন্য আমার পিতামাতার প্রয়োজন ()।
টম

আহ; আমার ক্ষমা উম্ম ... আমি জানি না যে আমার অজ্ঞতা প্রদর্শনে রেখে যাওয়া বা অন্য কাউকে বিরক্ত করা এড়াতে ত্রুটিটি মুছে ফেলা ভাল কিনা ... = | তবুও, কমপক্ষে আমি আজ দরকারী কিছু শিখেছি; ঠিক সেটাই কথা ..? =)
ডেভিড মনিকা

4
@ রাইসোবোল, কোনও উদ্বেগ নেই, অবদানের জন্য ধন্যবাদ thanks
টম

উত্তর:


145

কলিং .parents(".box .something1")সিলেক্টারের সাথে মেলে এমন সমস্ত প্যারেন্ট উপাদানগুলি ফিরিয়ে দেবে .box .something। অন্য কথায়, এটি প্যারেন্ট উপাদানগুলিকে ফিরিয়ে দেবে .something1যা ভিতরে রয়েছে এবং রয়েছে .box

আপনার নিকটতম পিতামাতার সন্তানদের এইভাবে পাওয়া দরকার:

$(this).closest('.box').children('.something1')

এই কোডটি .closestনির্বাচকের সাথে মিলে অন্তরতম পিতামাতাকে পেতে কল .childrenকরে , তারপরে আপনি যে চাচা খুঁজছেন তা খুঁজে পাওয়ার জন্য সেই প্যারেন্ট উপাদানটিকে কল করে।


আমি জানি এই একটি বিট বয়স কিন্তু এটা আরও ভাল ব্যবহার করার জন্য এই ক্ষেত্রে হয় পিতা বা মাতা () বরং নিকটতম () যেমন আমি কল্পনা সেখানে সঙ্গে আরো গাছ ট্র্যাভেরসাল হয় নিকটস্থ () ?
23:30

4
@ অ্যাক্ল্যাটার: তার গাছের আড়াআড়ি দরকারparent()ভুল উপাদান।
এসএলএক্স

আহা হ্যাঁ এটি পিতামাতার () পিতা বা মাতা () যে টমকে দুঃখিত! :)
rmorse

4
@acSlater: হ্যাঁ; যে কাজ করবে। তবে এটি জাভাস্ক্রিপ্টকে HTML কাঠামোর সাথে আরও অনেক মিলিয়ে দেয়। .closest(...)আরও স্থিতিস্থাপক, এবং আরও পাঠযোগ্য।
এসএলএক্স

8
যদি কেউ ভাবছেন: আপনি সঠিক পিতামাতাকে। ক্লোজস্ট () ব্যবহার করে খুঁজে পেয়েছেন, তবে যদি আপনি এমন কোনও শিশু উপাদান আবিষ্কার করেন যা সরাসরি শিশু নয় (তবে একটি সন্তানের শিশু, উদাহরণস্বরূপ), কেবল ব্যবহার করুন। .children এর জায়গায় () সন্ধান করুন।
ফ্যাবিয়েন স্নোওয়ার্ট

17
$(this).parent()

গাছের আড়াআড়ি মজাদার

$(this).parent().siblings(".something1");

$(this).parent().prev(); // if you always want the parent's previous sibling

$(this).parents(".box").children(".something1");

এবং আরও অনেকগুলি উপায়, আপনি এই দস্তাবেজগুলিকে সহায়ক বলে মনে করতে পারেন ।


ধন্যবাদ তবে পিতামাতার সন্ধান করছিল না, বরং পিতামাতার অন্য সন্তান (বা আসলে বাবা-মা)।
টম

হেই ... এটি আসলে পারিবারিক বিষয়।
টম

13

এটি ক্লাস সহ প্রথম পিতামাতাকে খুঁজে পাবে boxতারপরে রেগেক্স ম্যাচিংয়ের সাথে প্রথম শিশু শ্রেণিটি খুঁজে somethingপাবেন এবং আইডি পাবেন।

$(".mylink").closest(".box").find('[class*="something"]').first().attr("id")


5

আপনি ব্যবহার করতে পারে .each()সঙ্গে .children()এবং প্রথম বন্ধনী মধ্যে একটি নির্বাচক:

//Grab Each Instance of Box.
$(".box").each(function(i){

    //For Each Instance, grab a child called .something1. Fade It Out.
    $(this).children(".something1").fadeOut();
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.