سؤال

مرحبا، أحصل على هذه العلامة:

<div id="main">
     <div nam="item">1</div>
     <div nam="item">2</div>

     <div>
           <div nam="item">3</div>
           <div nam="item">4</div>
           <div nam="item">5</div>
     </div>

     <div nam="item">6</div>
     <div nam="item">7</div>
</div>

أنا الآن أختار فقط الطفل المباشر Divs باستخدام هذه الطريقة:

var divs = $("#main > [nam]"

سؤالي - أريد أن أفعل هذا داخل وظيفة حيث اجتازت DIV الأصل، كيف أحتاج إلى تغيير المحدد؟

function get_rootChildren(div)
{
      return($("* > [nam]",div));
}

^ هذا هو وهمية لكنني أعتقد أنك تعرف ما أقصده - كيف يمكن القيام بذلك؟ تشك، فوشي

هل كانت مفيدة؟

المحلول

ربما:

$("#main > div.item")

من عند مستندات محدد jquery.

parent > child

يطابق جميع عناصر الأطفال المحددة بواسطة "الطفل" للعناصر المحددة من قبل "الوالد".

للإجابة الجزء الثاني - أود استخدامها .children() شيء من هذا القبيل:

function get_rootChildren(div) {
   $(div).children('div.item');
}

نصائح أخرى

$('#main > div.item')

حدد #MAIN DIV، ثم حدد فقط عناصر DIF DIG فقط مع فئة من العناصر.

مجرد استخدام $ ("# الرئيسية> div.item"). يتأكد محدد ">" من أن ما وضعته بعد ذلك أطفال ما يأتي من قبل.

تعديل لتناسب سؤال جديد

//returns direct children of parent which are divs and have an attribute named name with value item
function get_rootChildren(parent){
  return $(" > div[nam='item']", parent);
}

إذا كان رمز الهيكل الخاص بك سيبدو تماما مثل العينة التي قدمتها، فستفعل ذلك.

$('#main > div.item')

ما يلي قادر أيضا على التعامل مع الهياكل المعقدة

$("#main > div.item:not(:has(>div))").each(function(index,item){
    alert($(item).text());
});

على سبيل المثال، فإن محددي الثاني ما زال فقط تقدم فقط 1،2،6،7 بينما أول سيقدم 1،2،3،5،6،7

<div id=main>
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">
    <div class="item">3</div>
  </div>
  <div>
    <div>4</div>
  </div> 
  <div class="item">
    <div>5</div>
  </div> 
  <div class="item">6</div>
  <div class="item">7</div>
</div>

إذا كنت تمر مع معرف الأصل كسلسلة، فيمكنك إنشاء التعبير قبل الاتصال به:

function get_rootChildren(divId) {
    var expr = "#" + divId + " > [nam]"; // creates expression for jQuery call
    return $(expr);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top