জ্যাকুরিতে কেবল প্রথম-স্তরের উপাদান নির্বাচন করা


94

আমি <ul>এই জাতীয় তালিকা থেকে কেবল পিতামাতার লিঙ্ক উপাদানগুলি কীভাবে নির্বাচন করতে পারি ?

<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a>
  <ul>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
  </ul>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>

সিএসএসে ul li a, তবে নাul li ul li a

ধন্যবাদ

উত্তর:


109
$("ul > li a")

তবে আপনি যদি নির্দিষ্টভাবে বাইরের দিকের উলটিকে লক্ষ্য করতে চান তবে আপনাকে মূল উলটিতে একটি ক্লাস স্থাপন করতে হবে:

<ul class="rootlist">
...

তারপর, এটা এর:

$("ul.rootlist > li a")....

আপনার কাছে কেবলমাত্র মূল উপাদান রয়েছে তা নিশ্চিত করার আরেকটি উপায়:

$("ul > li a").not("ul li ul a")

এটিকে দেখতে দুর্গন্ধযুক্ত মনে হলেও কৌশলটি করা উচিত


হুম আমি আবিষ্কার করলাম আমার সমস্যাটি jquery 1.2 ব্যবহার করা ছিল। আমি এটি ১.৩ দিয়ে প্রতিস্থাপন করেছি এবং এই ধরণের নির্বাচকরা এখন ভাল কাজ করছেন। আপনার জবাব এবং প্রত্যুত্তর প্রত্যেকে যাবার জন্য আপনাকে অনেক ধন্যবাদ।
অ্যাস্টন

আপনি যদি কোনও ক্লাস যুক্ত করতে না চান তবে কেবলমাত্র $ ("উল: প্রথম> ল এ") করুন তবে স্পষ্টতই এটি কেবল প্রথম স্তরের জন্য কাজ করবে, অভ্যন্তরীণ স্তরগুলিতে নয়।
Alfonso

আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ। আমি এটিও পরীক্ষা করে দেখেছি এবং এটি ভালভাবে কাজ করে বলে মনে হচ্ছে: ul.find(">li");যদি আপনার কাছে উল ভেরিয়েবলের জিকিউরি অবজেক্ট হিসাবে "উল" নোড থাকে।
জন বো

57

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

$('ul#root').children('li');

4
ধন্যবাদ, এটি আমার পক্ষে খুব সহায়ক। একটি $('ul').first().children('li')ব্যবহার করা যায়
ইভান ব্ল্যাক

এটি আমার পক্ষে পছন্দসই উত্তর, কারণ আমার কাছে ইতিমধ্যে উপাদান রয়েছে এবং তাই .ফাইন্ডের পরিবর্তে .children ব্যবহার করব।
হারবার্ট ভ্যান-ভ্লিয়েট

7

অন্যান্য উত্তরে বর্ণিত হিসাবে, সবচেয়ে সহজ পদ্ধতিটি হ'ল মূল উপাদানটি আইডি বা শ্রেণীর নাম অনুসারে স্বতন্ত্রভাবে চিহ্নিত করা এবং সরাসরি বংশধর নির্বাচনকারীকে ব্যবহার করা।

$('ul.topMenu > li > a')

যাইহোক, আমি একটি সমাধান যার উপর কাজ করবে সন্ধানে এই প্রশ্নের জুড়ে এসেছিল নামহীন উপাদানতারতম্য অতল DOM এর।

প্রতিটি উপাদান যাচাই করে এটি অর্জন করা যেতে পারে এবং মেলাও উপাদানগুলির তালিকায় এর কোনও পিতা-মাতার নেই uring এখানে আমার সমাধানটি , jQuery নির্বাচক 'শীর্ষস্থানে' মোড়ানো।

jQuery.extend(jQuery.expr[':'], {
  topmost: function (e, index, match, array) {
    for (var i = 0; i < array.length; i++) {
      if (array[i] !== false && $(e).parents().index(array[i]) >= 0) {
        return false;
      }
    }
    return true;
  }
});

এটি ব্যবহার করে মূল পোস্টের সমাধানটি হ'ল:

$('ul:topmost > li > a')

// Or, more simply:
$('li:topmost > a')

সম্পূর্ণ jsFizz এখানে উপলব্ধ ।


নতুন করে DOM পদ্ধতি ব্যবহার করে আপনি নাটকীয়ভাবে কর্মক্ষমতা উন্নত করতে পারেন :topmostব্যবহার করার চেষ্টা করুন - .parentElement.closest(selector)। বরাবরের মতো, আই + এজটি কেবল এটির সমর্থন করে না> :-( তাই এখানে একটি পলিফিল পেস্টবিন.
com


3

ফলাফলগুলি এখনও শিশুদের কাছে প্রবাহিত হলে আপনি এটি চেষ্টা করতে চাইতে পারেন, অনেক ক্ষেত্রে JQuery এখনও বাচ্চাদের জন্য প্রযোজ্য হবে।

$("ul.rootlist > li > a")

এই পদ্ধতিটি ব্যবহার করে: E> F কোনও এফ উপাদানগুলির সাথে মেলে যা কোনও উপাদান E এর শিশু is

জিকুয়ারিকে কেবল স্পষ্ট শিশুদের জন্য সন্ধান করতে বলে। http://www.w3.org/TR/CSS2/selector.html


0

আপনি $("ul li:first-child")কেবলমাত্র উল এর সরাসরি বাচ্চাদের পেতে ব্যবহার করতে পারেন ।

যদিও আমি সম্মত হচ্ছি, মূল ইউএল সনাক্ত করতে আপনার একটি আইডি বা অন্য কিছু দরকার নেই অন্যথায় এটি কেবল সমস্তটি নির্বাচন করবে। আপনার যদি ইউল এর চারপাশে কোনও আইডি দিয়ে ডিভ থাকে তবে করণীয় সবচেয়ে সহজ কাজ$("#someDiv > ul > li")


4
এটির ভুল ব্যবহার :first-child। এটি " liপ্রত্যেকের মধ্যে প্রথম" নির্বাচন করবে ul। আসল পোস্টটি " liপ্রথম থেকে প্রতিটি" জিজ্ঞাসা করছিল ul
কোর্টনি ক্রিস্টেনসেন


0

যে কোনও গভীরতা থেকে নেস্টেড ক্লাসে আমার কিছুটা সমস্যা হয়েছিল তাই আমি এটিকে বুঝতে পেরেছিলাম। এটি কেবলমাত্র প্রথম স্তরটি নির্বাচন করবে এটির সাথে জ্যাকুরি অবজেক্ট রয়েছে এমন মুখোমুখি হয়:

var $elementsAll = $("#container").find(".fooClass");4

var $levelOneElements = $elementsAll.not($elementsAll.children().find($elementsAll));

$levelOneElements.css({"color":"red"})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="fooClass" style="color:black">
Container
  <div id="container">
    <div class="fooClass" style="color:black">
      Level One
      <div>
        <div class="fooClass" style="color:black">
             Level Two
        </div>
      </div>
    </div>
    <div class="fooClass" style="color:black">
      Level One
      <div>
        <div class="fooClass" style="color:black">
             Level Two
        </div>
      </div>
    </div>
  </div>
</div>


0

 $("ul.rootlist > target-element")
2   $("ul.rootlist").find(target-element).eq(0) (only one instance)
3   $("ul.rootlist").children(target-element)

সম্ভবত আরও অনেক উপায় আছে


-1
.add_to_cart >>> .form-item:eq(1)

.add_to_cart থেকে ট্রি স্তরের শিশুটিতে দ্বিতীয়


4
এমনকি এ প্রশ্নেরও
কোনও

>>> এ কি? এই নির্বাচকের কোনও নাম আছে কি? এটি কি বৈধ নির্বাচক? নাকি এটা একটা রসিকতা ছিল?
জন বো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.