همچون مطالب پیشین و مثالهایی که هفته پیش به آنها اشاره شد، با نحوه کار و انتخاب عناصر، با استفاده از تابع پوششی جیکوئری و افزودن عناصر جدید با استفاده از تابع add() به عناصر انتخاب شده، آشنا شدیم و اگر مثالهایی که برای درک بهتر مساله ارایه شد را در آزمایشگاه تابع پوششی آزمایش کرده باشید، حتما تا بهحال دریافتهاید که کار با این توابع چقدر ساده و آسان است.
اکنون میخواهیم در میان عناصر انتخاب شده، از انجام عملیات بر روی برخی از آنها صرف نظر کنیم، این کار با استفاده از تابعnot() امکانپذیر خواهد بود؛ البته این تابع با دستور not: فرقی ندارد و هر دو را میتوان در دستورات جیکوئری بهکار برد.
بگذارید تا بحث را با ارایه یک مثال ادامه دهیم: فرض کنید که در صفحهای از طرح خود میخواهید عناصر<img >را که از ویژگیtitle بهره میبرند، به غیر از آنهایی که مقدارtitle آنها عبارتی مانندpuppy است، انتخاب کنید. برای رسیدن به این خواسته، این دستور img]title[:not(]title*=puppy[) میتواند کار مورد نظر را انجام دهد.
اما فرض کنید که ما دستورnot:را فراموش کردهایم، با استفاده از تابع not() دستوری که بالاتر به آن اشاره شد را پیادهسازی میکنیم که چیزی شبیه به این دستور خواهد شد:
('img]title[').not(']title*=puppy[')$
این دستور را در آزماشگاه تابع پوششی وارد کنید. با اجرای این کد در میان تصویرهایی که در سمت راست وجود دارد، تصویر دوم از سمت چپ (تصویر سگ) انتخاب خواهد شد، اما تصویر چهارم (سگ سیاه رنگ) انتخاب نمیشود!
این دستور اینگونه عمل میکند که پس از اجرا، در عناصر موجود در صفحه بهدنبال عناصر ><img میگردد و پس از پیدا شدن آنها، عناصری که نخستین شرط یعنی ویژگی title را دارا هستند انتخاب کرده و در ادامه، تصاویری که محتوای title آنها با نامی که ما دنبالش هستیم، برابری میکند با استفاده از دستور not() از عناصر انتخاب شده، خارج میکند.
توجه داشته باشید که عناصری که بهعنوان ورودی تابع not() میتوانیم استفاده کنیم، محدود هستند و اگر تعداد زیادی انتخابگر به آن وارد کنیم، نتیجهای نخواهیم گرفت.
در توضیح مقدار ورودی تابعnot() ، همانگونه که دیدید، میتواند یک رشته یا انتخابگر و یا یک آرایه باشد و خروجی آن نیز گروهی از عناصر هستند که مقادیر ورودی از آنها حذف شده است.
همانند تابع add() تابع not() نیز میتواند با پاس دادن مقادیر مورد نظر در یک عنصر و یا آرایه، عناصر خاص را از گروهی از عناصر وارد شده حذف کند، این نکتهای بسیار مهم در جیکوئری است، بهیاد داشته باشید که هر گروه از عناصر پوشش داده شده، میتوانند بهعنوان یک آرایه از عناصر بهکار گرفته شوند.
برخی مواقع لازم میشود تا گروهی از عناصر انتخاب شده را از فیلتر خاصی عبور دهیم. در مثال قبل شاید نیاز داشته باشیم، بر اساس چیدمانی که برنامه مشخص میکند، عناصری که انتخاب شدهاند را جدا کنیم و یا نیاز داشته باشیم که تنها از برخی از آنها استفاده کنیم.
شاید فکر کنید که برای انجام این کار به دفعات مورد نیاز از تابع not(element) استفاده میکنیم تا عناصر دلخواه خود را از میان گروهی از عناصر انتخاب شده خارج کنیم؛ اما تیم سازنده جیکوئری علاقهای نداشته است تا تمامی این کارها که در برخی از مواقع نیز باعث بروز خطای دستوری نویسنده (بهدلیل تکرار زیاد) میشود، توسط ما انجام گردد و با ایجاد تابع دیگری با نامfilter() ، کار را برای ما سادهتر کرده است. کاربرد تابعfilter() و نکات و مثالهای آن را هفته آینده بخوانید.
پویا سلیمی
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم