همانطور که علاقه مندان کتابخانه jQuery احتمالا متسحضر می باشند، آخرین نسخه از
این کتابخانه (1.6) حدود 10 روز پیش منتشر شد. انتشار این نسخه حدود سه ما پس از نسخه
1.5 و یک ماه پس از ارائه نسخه 1.5.2 می باشد. این موضوع بیانگر این می باشد که خوشبختانه
تیم توسعه دهنده این کتابخانه عزم جزمی جهت توسعه و ارتقای عملکرد آن دارند و این موضوع
خبر خوشی برای علاقه مندان این زبان می باشد.
آخرین نسخه از این کتابخانه حاوی بهبود های زیادی در کارایی و راندمان این زبان
بوده و بسیاری از باگ ها نیز رفع شده اند. برای کسب جزئیات کامل تغییرات می توانید
به
اینجا مراجعه کنید.
تغییرات زیر از جمله این بهبود ها می باشند.
- راندمان بهتر برای توابع ()attr و ()val
و ()data
- حمایت از مقادیر منطقی (Boolean) در تابع ()attr
- معرفی عملگر های "=+" و "=-" جهت اضافه یا کم نمودن مقادیر جدید
به مقادیر قبلی. مثال:
$("#table1").css('width',
"+=50px");
- یکسان نمودن بازه زمانی جلوه های انیمیشن. با استفاده از زبان jQuery می توانیم
چندین جلوه انیمیشن مختلف را همزمان بر روی کنترل های متفاوت و یا حتی یک کنترل
خاص اعمال نمود. عدم یکسان بودن زمان اجرای انمیشن ها برخی اوقات باعث این می شود
که اجرای انیمیشن های مختلف زودتر یا دیرتر از یکدیگر اتمام یابند. این مسئله در
برخی اوقات باعث نمایش نامناسب کنترل می شد که این مشکل در این نسخه مرتفع شده
است.
- متدهای ()find و ()closet و ()is
از این پس امکان دریافت تمام اشیاء DOM و اشیاء زبان jQuery را دارند.
تغییرات بسیار مهم برای بروز رسانی از نسخه های قبل:
دو تغییر بسیار مهم در این نسخه از کتابخانه انجام شده است که متاسفانه سازگار با
نسخه های پیشین نمی باشند و بنابر این در صورتی که قصد دارید بروز رسانی از نسخه های
قبل را انجام دهید حتما به این دو مورد توجه داشته باشید.
1. بازیابی اطلاعات خاصیت -data توسط متد ()data:
قبل از معرفی این تغییر بهتر است کمی در مورد خاصیت -data توضیح دهیم. کنترل های
HTML دارای خاصیت ها و ویژگی های زیادی از قبیل width و height و style و class و ...
می باشند که پاسخگوی نیاز های توسعه گران نرم افزار می باشد. ولی متاسفانه محدودیت
هایی نیز وجود دارند که در نسخه HTML4 حمایت نمی شوند. به طور مثال فرض کنید لیستی
از مشخصات کاربران را داخل یک کنترل table در صفحه وب نمایش می دهید. در بسیاری اوقات
(بخصوص هنگام برنامه نویسی سمت کلاینت) نیاز است که به شناسه کاربری هر شخص در رکورد
مربوط به آن دسترسی داشته باشیم. تاکنون از روشی مشابه زیر برای انجام این کار استفاده
می شد.
<tr
user-id="10"><td>....</td> </tr>
روش فوق پاسخگوی نیاز برنامه نویسان بود ولی به هر حال باعث نقض استاندارد های HTML4
می شد. در نسخه HTML5 یک ویژگی جدید به نام -data معرفی شده است که امکان فوق را به
ما می دهد. بدین ترتیب که پس از عبارت -data نام متغیر ذکر شده و
پس از علامت "=" مقدار مربوطه درج می شود.
مثال فوق را با استفاده از استاندارهای HTML5 می توانیم به شکل زیر بنویسیم.
<tr
data-user-id="10"><td>....</td> </tr>
در نسخه های پیشین زبان jQuery با استفاده از دستور زیر
می توانستیم به مقدار دخیره شده در ویژگی -data دسترسی داشته باشیم.
var result= $("#txt").data('user-id');
اما در نسخه 1.6 تیم توسعه دهنده این کتابخانه جهت سازگاری
با استاندارد های HTML5 دسترسی به مقدار -data را از روش زیر میسر ساخته اند.
var result= $("#txt").data('userId');
همانطور که ملاحظه می کنید علامت "-"
حذف شده و از استاندارد Camel-Case برای دسترسی به مقدار متغیر استفاده شده است (اولین
کاراکتر اولین کلمه به شکل حرف کوچک و حرف ابتدای سایر کلمات به شکل حروف بزرگ نوشته
می شود).
اگر چه وب سایت رسمی این کتابخانه از این تغییر به عنوان
یک Breaking Change نام برده است ولی با آزمایشاتی که بنده انجام دادم همچنان روش قدیمی
نیز جوابگو می باشد! ولی توصیه می شود در صورتی که قصد بروز رسانی پروژه های کنونی
خود به این نسخه از کتابخانه را دارید، حتما این تغییرات را هم لحاظ نمایید.
2. تغییرات اعمال شده بر روی متد ()attr
این تغییر شاید مشکل سازترین تغییر باشد. در نسخه های
پیشین زبان jQuery تفاوتی میان Attribute ها و Properties در المنت های HTML وجود نداشت.
بنابراین به طور مثال شما می توانستید با استفاده از دستور زیر محتویات یک کنترل متنی
را در هر زمانی بخوانید یا بنویسید.
$("#txt").attr('value');
<input
type="text"
id="txt"
value="123"
/>
اما در نسخه 1.6 این عمل امکان پذیر نمی باشد. در این
نسخه بین Attribute ها و Properties تفاوت قائل شده است. Attribute
ها حالت اولیه کنترل های HTML هنگام اجرای صفحه وب می باشند ولی
Properties حالت داینامیک کنترل های HTML می باشند که در هر لحظه
ممکن است توسط کاربر تغییر پیدا کنند.
به طور مثال در کنترل متنی زیر خاصیت value به عنوان
یک Attribute دارای مقدار 123 می باشد.
<input
type="text"
id="txt"
value="123"
/>
و اگر دستور زیر را اجرا نمایید، مقدار 123 برگردانده
می شود.
$("#txt").attr('value');
اکنون پس از اجرای صفحه اگر مقدار کنترل متنی فوق را
به 123456 تغییر دهید و مجداد دستور فوق را اجرا کنید، با کمال تعجب مشاهده می کنید
که باز هم همان مقدار 123 برگردانده می شود! در حالیکه در نسخه های پیشین اینگونه نبود
و مقدار جاری کنترل یعنی 123456 برگردانده می شد.
این موضوع می تواند باعث از کار افتادن برنامه های نوشته
شده با نسخه های قبلی گردد.
اما دو متد جدید نیز معرفی شده است که از این پس باید
از آن ها استفاده گردد. متد ()prop جهت خواندن و نوشتن مقدار داینامیک
ویژگی کنترل در هر لحظه استفاده شده و متد ()removeProp نیز برای حذف مقدار ویژگی مذکور
استفاده می شود.
بنابراین با اجرای دستور زیر می توانیم به مقدار جاری
کنترل متنی، یعنی 123456 دسترسی پیدا کنیم.
در صورتی که شما از برنامه نویسان زبان jQuery می باشید
پیشنهاد می شود که حتما جزئیات تغییرات را در صفحه تغییرات این
نسخه مطالعه کنید.