اجرای همزمان jQuery و سایر کتابخانه هایی که از علامت $ استفاده می کنند و با jQuery تداخل دارند (با $.noConflict(); یا jQuery.noConflict(); )، در jQuery

همان طور که می دانید علامت $ در jQuery کاربرد مهمی دارد، اما علاوه بر jQuery ، کتابخانه هایی هم هستند که از علامت $ استفاده می کنند. بنابراین اگر در کدهای خود به طور همزمان از jQuery و یکی از آن کتابخانه ها استفاده کنیم، تداخل به وجود می آید و خطا ایجاد می شود.

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

به عنوان مثال، فرض کنید کتابخانه ای با نام Bliss داریم که کدهای JavaScript آن در فایلی با نام bliss.shy.js وجود دارد. در یک صفحه (صفحه HTML)، به فایل bliss.shy.js که حاوی کدهای تعریف کتابخانه Bliss است ارجاع داده ایم (مشابه کد زیر) :

و در خود صفحه (صفحه HTML)، کدهای زیر را برای اجرای آن نوشته ایم :

همان طور که مشاهده می کنید، در خط اول کدها، تعیین کرده ایم که علامت $ برای ارجاع به نام کتابخانه به کار رود :

و بنابراین علامت $ چندین بار در کدهایی که برای اجرای آن نوشته ایم، به کار رفته اند.

وقتی این کدها را در صفحه ای بنویسیم که از jQuery هم استفاده می شود، به دلیل اینکه هم کتابخانه jQuery و هم کتابخانه Bliss به طور همزمان از علامت $ برای ارجاع به نام کتابخانه خود استفاده می کنند، بنابراین تداخل به وجود می آید و خطا ایجاد می شود (کتابخانه jQuery از علامت $ برای ارجاع به نام jQuery و کتابخانه Bliss از علامت $ برای ارجاع به نام Bliss استفاده می کند).

حال اگر بخواهیم به طور همزمان از دو کتابخانه jQuery و Bliss استفاده کنیم، باید انتخاب کنیم که فقط یکی از آنها از علامت $ استفاده کند. این دو حالت را در ادامه شرح می دهیم :

حالت اول : عدم استفاده کتابخانه دیگر (مثلا کتابخانه Bliss) از علامت $ :

در این حالت می خواهیم، کتابخانه jQuery همچنان از علامت $ استفاده کند و کتابخانه دیگر (مثلا کتابخانه Bliss) از علامت $ استفاده نکند.

نکته

اگرچه در ادامه روشی را توضیح می دهیم که بر اساس تغییرات در کدهای اجرای کتابخانه دیگر (مثلا کتابخانه Bliss) است، اما همیشه قبل از این کار ابتدا در اینترنت جستجو کنید و ببینید آیا در راهنماهای خود کتابخانه، کدی برای رفع این مشکل در نظر گرفته شده یا نه.

کدهای اجرای کتابخانه Bliss در صفحه، به صورت زیر هستند :

خوشبختانه کد تعریف ارجاع علامت $ به نام کتابخانه (نام Bliss) در همین کدها وجود دارد (برای برخی کتابخانه ها، این کد در خود فایل اصلی کتابخانه وجود دارد) :

باید این خط از کدهای اجرای کتابخانه Bliss که تعیین کرده علامت $ برای ارجاع به نام آن به کار رود را حذف کنیم (آن را به حالت توضیح در می آوریم) و همچنین به جای تمام بخش هایی از کدهای اجرای آن که علامت $ به کار رفته، خود نام Bliss که علامت $ برای ارجاع به آن به کار رفته را بنویسیم. نتیجه به صورت زیر است :

دقت کنید که در کد بالا، علامت $ در عبارت Bliss.$ باعث ایجاد تداخل با jQuery نمی شود و نیازی به جایگزینی برای آن نبوده.

اکنون هم کتابخانه jQuery و هم کتابخانه Bliss در صفحه به درستی اجرا می شوند.

حالت دوم : عدم استفاده کتابخانه jQuery از علامت $ :

اگر بخواهیم در کتابخانه دیگر (مثلا کتابخانه Bliss) تغییری ندهیم و در عوض تعیین کنیم که کتابخانه jQuery از علامت $ استفاده نکند، خود کتابخانه jQuery کدی را برای این منظور در نظر گرفته است. این موضوع را با یک مثال شرح می دهیم.

فرض کنید برای استفاده از کتابخانه jQuery ، در صفحه (صفحه HTML) به فایل آن (فایل اصلی خود کتابخانه) ارجاع داده ایم :

و کدهای زیر را هم برای اجرا شدن بر اساس jQuery ، در صفحه نوشته ایم :

اکنون می خواهیم تعیین کنیم که کتابخانه jQuery از علامت $ استفاده نکند. برای این منظور، خود کتابخانه jQuery تعیین کرده است که قبل از اجرای هرگونه کد jQuery در صفحه، باید کد زیر نوشته شود :

و یا کد زیر (برابر همان کد بالا است) :

سپس باید کدهای jQuery نوشته شوند. در کدهای jQuery ، باید به جای علامت $ ، کلمه ((jQuery)) یعنی همان نام اصلی کتابخانه نوشته شود.

یعنی مثلا کدهای قبلی را در نظر بگیرید :

کدهای مورد نظر به کدهای زیر تبدیل می شوند (نوشتن کد $.noConflict(); و تبدیل علامت های $ به کلمه jQuery) :

و یا به کد زیر (نوشتن کد jQuery.noConflict(); و تبدیل علامت های $ به کلمه jQuery) :

بنابراین اکنون هم کتابخانه jQuery و هم کتابخانه Bliss در صفحه به درستی اجرا می شوند (در این حالت، هیچ کاری با کدهای کتابخانه Bliss نداشتیم و تغییری در آنها ندادیم).

کد کامل صفحه HTML برای اجرای jQuery بر اساس دو نوع کدنویسی با علامت $ و بدون علامت $ :

در ادامه، 3 مثال از کد کامل صفحه HTML برای اجرای jQuery بر اساس دو نوع کدنویسی با علامت $ و بدون علامت $ را ذکر می کنیم.

مثال

اجرای کد jQuery بر اساس علامت $ :

نتیجه :

خطا - صفحه را دوباره بارگذاری کنید
مثال

اجرای کد jQuery بدون استفاده از علامت $ ، با به کار بردن کد $.noConflict(); :

نتیجه :

خطا - صفحه را دوباره بارگذاری کنید
مثال

اجرای کد jQuery بدون استفاده از علامت $ ، با به کار بردن کد jQuery.noConflict(); :

نتیجه :

خطا - صفحه را دوباره بارگذاری کنید
نویسنده علیرضا گلمکانی
شماره کلید 3249
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)