چگونه jQuery را توسعه دهیم؟!
یکی از مواردی که می تواند نقطه قوت یا ضعف یک زبان برنامه نویسی باشد ، قابلیت توسعه آن زبان است . همانطور که در بخش های قبل نیز مشاهده کردید تابع اصلی و پوششی جی کوئری این قابلیت را دارد تا تعداد زیادی ازتوابع و نیاز هایی که یک طراح وب در طراحی نیاز دارد برایش به ارمغان آورد و به دفعات زیاد نیز مورد استفاده قرار گیرد. تمامی قابلیتهای که این تابع برای ما می تواند ایجاد کند همه از قبل در کتابخانه جی کوئری نوشته شده اند و به نوعی مورد استفاده قرار گرفتن آنها توسط سازندگان جیکوئری پیش بینی شده است.
اما همگان می دانند که هر کتابخانه ای هرچند از همه لحاظ کامل به نظر رسد ، اما باز هم ممکن است روزی برسد که شخصی تقاضای موردی را کند که در آن کتابخانه موجود نباشد ، آن وقت به نظر شما تکلیف چیست؟!
شاید این دلیلی باشد که تا به حال هیچ کتابخانه ای ادعای کامل بودن و رفع تمامی نیاز های کاربران خود را نکرده است. البته ممکن است به انجام رساندن این ادعا با صرف وقت و کار زیاد امکان پذیر باشد ولی در اینجاست که فاکتور فضا و حجم از بین می رود. افزودن مواردی جدید به کتابخانه ممکن است تا حدی باعث کاملتر شدن آن شود ولی نمیتوان افزایش حجم را فدای کامل شدن کتابخانه کرد ، مخصوصا اینکه این روز ها حجم و فضای اشغال شده توسط یک برنامه خود تبدیل به فاکتور مهمی در موفقیت برنامه ها و اسکریپت ها شده است.
خوشبختانه نویسندگان جی کوئری به مواردی که در بالا به آنها اشاره شد توجه داشته اند و با مصرف انرژی و صرف وقت راه حل این مشکل را پیدا کردهاند! بر این اساس جی کوئری به نحوی طراحی و پیاده سازی شده است که به راحتی بتوان توابع مورد نیاز برخی از طراحان وب که به صورت معدود مورد استفاده قرارمی گیرند ، به سادگی نیز در دسترس ایشان قرار گیرد. با استفاده از قابلیت توسعه جیکوئری می توان از امکانات قدرتمندی که ممکن است کمتر در یک طراحی وب مورد نیاز شود ، استفاده کرد. بگذارید تا با ارائه مثالی این مسئله را بازتر کنیم. فرض کنید جی کوئری در حالت استاندارد از هیچ تابعی برای غیر فعال کردن گروهی از عناصر صفحه ، پشتیبانی نکند و در صفحه نیز از فرم(form)های مختلف استفاده کردهایم که هرکدام از عناصر با یک کلاس خاص تعریف شده اند، به صورت استاندارد باید از این دستور استفاده کرد:
.form # y Form input)$
Special)disable();
اما توجه داشته باشید که تابع disable در برنامه وجود ندارد و اجرای این دستور همراه با خطا خواهد بود ، باید خودمان با توجه به خاصیت توسعه پذیری جی کوئری تابع مورد نظر را بنویسیم:
$.fn.disable=function () {
Return this each (function(){
If (typeof this disabled !=undefined)
This disabled = true;
});
}
تعداد زیادی از دستورات جدید در این مثال استفاده شده است که شاید آشنایی زیادی با آنها نداشته باشید ، اما نگران نباشید ، در بخش های بعد کاملا به معرفی آنها خواهیم پرداخت.
در ابتدا عبارت $.fn.disable به این معنی است که با استفاده از$.fn درحال توسعه جی کوئری ومعرفی تابعی جدید با نام disable هستیم ، در داخل آن تابع this به گروهی از توابع DOM اشاره می کند که نیاز به استفاده از آنها داریم و سپس به کمک تابعeach() می توان عملیات مورد نظر خود را به گروهی از عناصر موجود در صفحه تخصیص دهیم. به تابع each() تابع دیگر پاس می دهیم که توسط آن عملیات مورد نظر خود را انجام می دهیم. برای هر عنصر چک می کنیم که آیا خاصیت disabled را دارند و یا نه ، در صورت غیر فعال بودن ، وضعیت آنها را true تنظیم می کنیم ، سپس نتایج در هر بارانجام عملیات توسط تابع each() بازگردانده می شود ، با این حساب تابعی که نوشته شده قادر خواهد بود تا از خاصیت های دیگری نیز پشتیبانی کند ، به عنوان مثال بعد از غیر فعال کردن عناصر مورد نظر ، کلاس مشخصی نیز به آنها نسبت دهیم:
$(formmyFrom input special)
Disable () addClass (moreSpecial);
جالب است نه؟! بسیاری از خاصیت های که به صورت پیش فرض در جی کوئری تعریف نشده اند ، امروزه توسط توسعه دهندگانی که بر روی جی کوئری فعالیت می کنند نوشته می شوند که آنها را اصطلاحا "پلگین" های جی کوئری می نامند.
پویا سلیمی
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم