در مطالب شماره‌های گذشته دستورات مهمی از جی‌کوئری را معرفی کردیم، اگر به یاد داشته باشید در بخش‌های قبل در مورد زنجیره‌های جی‌کوئری مطالبی ارائه شد و تا به این جا نمونه‌های مختلفی از زنجیره‌ها را در جی‌کوئری مثال زده‌ایم. در آخرین بخش از این سری از آموزش‌های جی‌کوئری در مورد مدیریت این زنجیره‌ها صحبت خواهیم کرد.

قبل از‌ هر چیز باید به این نکته اشاره کرد که سازندگان و نویسندگان جی‌کوئری با ایجاد زنجیره‌ها در جی‌کوئری گام مهمی در انعطاف‌پذیری و قابلیت‌های این فریم ورک برداشته‌اند، این زنجیره‌ها نه تنها قدرت اجرای چندین دستور پشت سر‌هم و در یک خط را به شما می‌دهند بلکه باعث می‌شوند تا راندمان برنامه‌های نوشته شده را به طرز کاملا باور نکردنی در مقایسه با دیگر فریم‌ورک‌های جاوااسکریپت، بالا‌ببرید.

افزایش راندمان به این خاطر است که نیازی نیست تا عناصر پوشش داده شده چندین مرتبه برای انجام چندین فرآیند مختلف مورد پردازش قرار گیرند.

بسته به روشی که در یک زنجیر جی‌کوئری به‌کار گرفته‌می‌شود، ممکن است حتی در یک زنجیر، چندین گروه از عناصر انتخاب شده ایجاد شوند؛ به‌عنوان مثال تابعclone()  گروهی جدید از عناصر پوشش داده شده را ایجاد می‌کند که در واقع یک کپی از عناصری است که در ابتدا پوشش داده شده‌اند، به عنوان مثال این دستور را در نظر بگیرید:

('img').clone().appendTo('َsomewhere');$
با استفاده از این دستور و طبق صحبت‌های بالا دو گروه از عناصر پوشش داده شده ‌ایجاد خواهند‌شد، یک گروه عناصر «»img درون صفحه هستند و گروهی دیگر یک کپی از این عناصر هستند که با استفاده از دستور بعدی(appendTo)  در مکانی دیگر از صفحه نمایش داده می‌شوند.

اما سوالی که این‌جا ممکن است مطرح‌شود این است که بعد از انجام این کار اگر مثلا بخواهیم یک کلاس را به عناصر پوشش داده شده اصلی اختصاص دهیم،با توجه به حرکت رو به جلو در زنجیر و عدم‌امکان بازگشت به عقب، آن وقت وضعیت چگونه خواهد‌بود؟

در اینجا دستوری معرفی می‌شود که می‌توان با کمک آن به سادگی به این سوال پاسخ‌داد، دستور  end()  باعث می‌شود که انجام عملیات بر روی گروهی از عناصر پوشش داده شده به پایان‌برسد، به عنوان مثال اگر بخواهیم دستور قبلی را به نحوی دیگر بنویسیم که بعد از انجام فرآیندی بر روی کپی گرفته شده از عناصر انتخاب شده به سراغ عناصر اصلی برویم و روی آنها نیز فرآیند دیگری انجام دهیم، می توانیم دستوری شبیه این دستور را داشته‌باشیم:

('img').clone().appendTo('‌َ‌somewhere')$
end().addClass('beenCloned');.

تابع  end()  هیچ مقداری را به عنوان پارامتر ورودی قبول نمی‌کند، در‌عوض هر‌جایی که استفاده شود عناصر پوشش داده شده قبل را تحت تاثیر قرار می‌دهد و باعث می‌شود که برنامه به سراغ آنها برود.

اگر بخواهیم به صورت فنی‌تر این مسئله را بررسی کنیم که بهتر بتوانید آن را درک کنید، می‌توان این‌گونه دستورات جی‌کوئری را توصیف کرد که در هنگام اجرای یک زنجیره در جی‌کوئری، هر کدام از عناصر پوشش داده شده در یک stack (پشته)  قرار می‌گیرندpush()  می‌شوند سپس درهر زمانی که دستور  end()  فراخوانی می‌شود، آخرین گروه عناصر پوشش داده شده که در بالاترین مکان  stack  قرار دارند، pop  می‌شوند و شما می توانید از آنها استفاده کنید.

دستور دیگری که می توان در اینجا معرفی کرد،  andSelf()   است. با استفاده از این دستور می توانید دو گروه از عناصر  push  شده در stack  که در بالاترین مکان قرار دارند را با یکدیگر ادغام کنید به این معنا که آخرین دو گروه از عناصر پوشش داده شده قبلی که در زنجیره جی‌کوئری مورد استفاده قرار گرفته‌اند، با استفاده از این دستور با یکدیگر ادغام می‌شوند. این دستور نیز مانند دستور  end()  هیچ پارامتر ورودی ندارد.

در پایان این بخش و در کل آموزش‌های جی‌کوئری سعی کردیم که در مورد ایجاد و مدیریت عناصر در جی‌کوئری صحبت کنیم، در طی تمامی این مباحث، جی‌کوئری ابزاری را معرفی کرد که با استفاده از آنها می‌توانید به‌سادگی و صرف کمترین منابع سیستم به هدفتان برسید، اکنون شما می‌توانید کلیه عناصر موجود در یک صفحه وب را با استفاده از دستورات و انتخاب‌گر‌های متعددی که جی‌کوئری در اختیارتان قرار می‌دهد ، کنترل کنید و بر روی آنها فرآیند‌های مورد نظرتان را انجام دهید.

پویا سلیمی

منبع :‌کلیک‌


دسته ها : برنامه‌نویسی
شنبه نهم 6 1387
X