سؤال
مرحبا، أحصل على هذه العلامة:
<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);
}