پیمایش به پایین (فرزندان)
پیدا کردن فرزندان عنصر با children() و find()
پیمایش به پایین
دو متد برای پیدا کردن فرزندان یک عنصر:
| متد | کار |
|---|---|
children() | فقط فرزندان مستقیم (یک سطح پایین) |
find() | همه فرزندان در همه سطوح (نوه، نوهی نوه...) |
مثال با ساختار تودرتو
<div class="box">
<p>پاراگراف مستقیم</p>
<span>
<p>پاراگراف تودرتو (نوه)</p>
</span>
</div>
// فقط p مستقیم: پاراگراف مستقیم
$("div.box").children("p").css("color", "red");
// همه pها در هر عمقی: هر دو پاراگراف
$("div.box").find("p").css("color", "blue");
// همه فرزندان (بدون سلکتور)
$("div.box").children().css("border", "1px solid gray");
نکته مهم:
find() حتماً سلکتور میخواهد! find() بدون پارامتر هیچ چیزی برنمیگرداند. برای همه فرزندان از find("*") استفاده کنید.children با فیلتر
// فقط فرزندان مستقیمی که کلاس active دارند
$("#menu").children(".active").css("font-weight", "bold");
// فقط فرزندان مستقیم li
$("#menu").children("li").css("list-style", "none");
مثال کاربردی: منوی درختی
// باز و بسته کردن زیرمنوها
$(".has-submenu > a").click(function(e) {
e.preventDefault();
$(this).parent() // والد li
.children(".submenu") // زیرمنوی مستقیم
.slideToggle();
});
مثال: هایلایت ستون جدول
// رنگی کردن همه سلولهای سطر اول
$("table").find("tr:first td").css("background", "#4a7c59")
.css("color", "white");
مقایسه متدهای پیمایش به پایین
| متد | عمق | سلکتور | کاربرد |
|---|---|---|---|
children() | فقط یک سطح | اختیاری | ساختارهای ساده |
find() | همه سطوح | اجباری | جستوجوی عمیق |
جمعبندی
children()فرزندان مستقیم (یک سطح)find()همه فرزندان در هر عمقی — سلکتور اجباری دارد- برای همه فرزندان:
find("*") - ترکیب با parent برای منوهای درختی رایج است
این مبحث بخشی از دوره آموزش کامل jQuery است.