سلکتورهای پیشرفته
فیلترهای :first، :last، :even، :odd، :contains و سلکتورهای فرم
فیلترهای jQuery
علاوه بر سلکتورهای CSS، jQuery فیلترهای قدرتمند خودش را دارد که با علامت : شروع میشوند. این فیلترها انتخاب عناصر را بسیار دقیقتر میکنند.
فیلترهای موقعیتی
| فیلتر | توضیح | مثال |
|---|---|---|
:first | اولین عنصر | $("p:first") |
:last | آخرین عنصر | $("p:last") |
:even | عناصر با ایندکس زوج (۰، ۲، ۴...) | $("tr:even") |
:odd | عناصر با ایندکس فرد (۱، ۳، ۵...) | $("tr:odd") |
:eq(n) | عنصر با ایندکس n (از صفر) | $("li:eq(2)") |
:gt(n) | عناصر با ایندکس بزرگتر از n | $("li:gt(2)") |
:lt(n) | عناصر با ایندکس کوچکتر از n | $("li:lt(2)") |
یادتان باشد ایندکسها از صفر شروع میشوند! پس
:eq(2) سومین عنصر را انتخاب میکند، نه دومین را. همچنین :even عنصر اول (ایندکس ۰) را شامل میشود چون صفر عدد زوج است.فیلترهای محتوایی
| فیلتر | توضیح | مثال |
|---|---|---|
:contains(text) | عناصری که متن مشخصی دارند | $("p:contains('سلام')") |
:empty | عناصر خالی | $("td:empty") |
:has(selector) | عناصری که عنصر مشخصی داخلشان است | $("div:has(p)") |
:parent | عناصری که فرزند دارند | $("td:parent") |
فیلترهای نمایش
| فیلتر | توضیح |
|---|---|
:hidden | عناصر مخفی (display:none یا input مخفی) |
:visible | عناصر قابل مشاهده |
// شمارش پاراگرافهای مخفی و نمایان
var hidden = $("p:hidden").length;
var visible = $("p:visible").length;
console.log("مخفی: " + hidden + " | نمایان: " + visible);
فیلترهای فرم
یکی از کاربردیترین گروه فیلترها برای کار با فرمها:
| فیلتر | توضیح |
|---|---|
:input | همه inputها، textareaها، selectها و buttonها |
:text | inputهایی با type="text" |
:password | فیلدهای رمز عبور |
:radio | دکمههای رادیویی |
:checkbox | چکباکسها |
:checked | عناصر تیکخورده (radio و checkbox) |
:selected | گزینه انتخابشده در select |
:disabled | عناصر غیرفعال |
:enabled | عناصر فعال |
مثال: کار با فرم
// پیدا کردن همه چکباکسهای تیکخورده
var checked = $("input:checkbox:checked");
// غیرفعال کردن همه فیلدهای متنی
$("input:text").prop("disabled", true);
// گرفتن مقدار گزینه انتخابشده
var city = $("select option:selected").val();
فیلترهای فرزند
| فیلتر | توضیح |
|---|---|
:first-child | عنصری که اولین فرزند والدش است |
:last-child | عنصری که آخرین فرزند والدش است |
:nth-child(n) | فرزند n-اُم والد (از یک شروع میشود!) |
:only-child | عنصری که تنها فرزند والدش است |
تفاوت مهم:
:first اولین عنصر در کل مجموعه انتخابشده است، اما :first-child عناصری هستند که در والد خودشان اولین فرزند باشند. مثلاً $("li:first-child") اولین آیتمِ هر لیست را انتخاب میکند.ترکیب سلکتورها با فیلترها
// اولین پاراگراف داخل div با کلاس content
$("div.content p:first");
// آیتمهای لیست با ایندکس بزرگتر از ۳
$("ul li:gt(3)");
// سلولهای خالی جدول
$("table td:empty").html("-");
جمعبندی
- فیلترهای
:first،:last،:even،:oddو:eq()برای انتخاب بر اساس موقعیت - فیلترهای
:contains()،:emptyو:has()بر اساس محتوا - فیلترهای
:hiddenو:visibleبر اساس وضعیت نمایش - فیلترهای فرم مثل
:checkedو:selectedبرای کار با فرمها - ایندکسها از صفر شروع میشوند، اما
:nth-child()از یک!
این مبحث بخشی از دوره آموزش کامل jQuery است.