سبد (0)

تبلیغات

متد noconflict در jQuery

چه می شود اگر بخواهید علاوه بر کتابخانه jQuery از کتابخانه های دیگر JavaScript نیز استفاده کنید.


jQuery و دیگر کتابخانه های JavaScript

همانطور که می دانید، jQuery از علامت $ بعنوان یک میانبر (shortcut) برای دسترسی به عناصر استفاده می کند.

چه اتفاقی می افتد اگر کتابخانه های دیگر JavaScript نیز از علامت $ بعنوان میانبر استفاده کنند؟

بعضی دیگر از کتابخانه های معروف JavaScript:

  • MooTools
  • Backbone
  • Sammy
  • Cappuccino
  • Knockout
  • JavaScript MVC
  • Google Web Toolkit
  • Google Closure
  • Ember
  • Batman
  • Ext JS

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

تیم jQuery قبلاً درباره این موضوع اندیشیده اند و نهایتاً، متد ()noConflict را پیاده سازی کرده اند.


متد ()noConflict در jQuery

متد ()noConflict، علامت $ را برای استفاده دیگر کتابخانه ها آزاد می کند.

البته بصورت خیلی ساده با نوشتن "jQuery" بجای "$" می توانید از امکانات jQuery استفاده کنید.

مثال (متد noconflict در jQuery)

$.noConflict();
jQuery(document).ready(function(){
  jQuery("button").click(function(){
    jQuery("p").text("jQuery is still working!");
  });
});
خودتان امتحان کنید »

همچنین می توانید بجای واژه پیشفرض "jQuery"، میانبر خودتان را ایجاد کنید. به مثال زیر توجه فرمایید:

مثال (متد noconflict در jQuery)

var jq = $.noConflict();
jq(document).ready(function(){
  jq("button").click(function(){
    jq("p").text("jQuery is still working!");
  });
});
خودتان امتحان کنید »

اگر بلوکی از کدهای jQuery داشته باشید که از علامت $ بعنوان میانبر استفاده می کنند و نخواهید که علامت $ تغییر کند، می توانید با ارسال علامت $ بعنوان پارامتر به متد ()ready اجازه دهید که داخل این تابع از این علامت استفاده شود. در خارج از آن شما باید از "jQuery" بعنوان میانبر استفاده کنید:

مثال (متد noconflict در jQuery)

$.noConflict();
jQuery(document).ready(function($){
  $("button").click(function(){
    $("p").text("jQuery is still working!");
  });
});
خودتان امتحان کنید »

 For a complete overview of all jQuery Misc methods, please go to our jQuery Misc Reference.

دیدگاه‌ها  

+6 # الیاس تیموری منظری 1394-10-27 12:34
سلام خسته نباشید
با تشکر از شما واقعا مطالب مفید است.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # java 1394-08-16 15:48
چرا وقتی سه تا مثال رو پشت هم نوشتم فقط یه دونش اجرا شد
منظورم اینه که با هر سه روش که دالر رو آزاده میکنه مینویستم ولی فقط اولین کدم اجرا مبشه مثلا این کدهای زیر رو نگاه کنید

$.noConflict();
jQuery("#noc").click(function(){
jQuery("#conf").text("salam jguery hanooz ok ast")
})

var jq=$.noConflict();
jq(document).ready(function(){
jq("#noc1").click(function(){
jq("#conf1").text("salam jguery hanooz ok hastaaaa")
})
})

$.noConflict();
$(document).ready(function($) {
$("#btn").click(function(){
$("#ss").text("jqqqqqqqqqqqqq")
})
});


الان بالا از هر سه روش نوشتمش ولی فقط روش اول اجرا میشه و تا وقتی که تموم NOCONFLICT ها رو بر ندارم روش های دگ اجرا نمیشه چرا دلیلش چیه
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-08-16 20:53
با سلام.
من همین کدا رو توی یه فایل paste کردم. این کدها از لحاظ نگارش خطا داره. بعدش سعی کن تو صفحه یه بار از document.ready استفاده کنی. برای استفاده از تابع هم نیازی نیست علامت $ رو قبلش بیاری.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # java 1394-08-18 13:00
یعنی کلا یه بار اول کد هام از ready استفاده کنم دگ نمیخواد ؟
بعد منظورت از برای استفاده از تابع نیازی نیس $ بذارم چیه ؟ یه مثال بزن واسم ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-08-18 13:17
رویداد کلیک رو توی ready بنویس.

برای صدا زدن تابع هم کافیه اسم رو به همراه پارامترهای موردنیازش بیاری. اگر پارامتر نداشت، پرانتز رو باید خالی بذاری.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # webnoos.com 1394-02-22 11:07
این آموزش یه خورده مبهم بود...
یعنی اگر از کتابخانه های دیگر استفاده نکنیم و فقط از کتابخانه ی JQuery استفاده کنیم می توانیم همیشه $ بگذاریم؟
خب ما که نمیدونیم افزونه های دیگه از کتابخانه های دیگه بهره بردن یا نه پس به این ترتیب اصلا نباید از $ استفاده کنیم ؟ من مثال اول رو متوجه نشدم... یعنی $ رو برای سایر کتابخانه ها آزاد کردین ولی خوده JQuery نمی تونه از $ استفاده کنه؟!!!
یعنی این همه مثال در آموزشهای قبلی با $ داشتیم پس چی می شه؟؟؟ یعنی هیچ جا از $ استفاده نکنیم؟؟؟
لطفا توضیح بیشتری بدهید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1394-02-25 11:16
به نقل از webnoos.com:

یعنی اگر از کتابخانه های دیگر استفاده نکنیم و فقط از کتابخانه ی JQuery استفاده کنیم می توانیم همیشه $ بگذاریم؟

بله دقیقاً درسته ...
به نقل از webnoos.com:

خب ما که نمیدونیم افزونه های دیگه از کتابخانه های دیگه بهره بردن یا نه پس به این ترتیب اصلا نباید از $ استفاده کنیم ؟

افزونه های مختلفی را در جوملا و یا وردپرس می توان استفاده نمود و قبل از نصب آنها حتماً باید بررسی کنید که از کدام کتابخانه های JavaScript استفاده می کنند. به نظرم لود کردن 2 کتابخانه مختلف سمت کاربر کار درستی نیست، این را بخاطر حجم کتابخانه می گم، و باعث کند شدن لود سایت، بار اول خواههد شد، پس اگر کامپوننت یا افزونه ای را نصب کردید که از کتابخانه jQuery استفاده می کند، از این به بعد بهتر است، افزونه هایی که از دیگر کتابخانه ها استفاده می کنند را نصب نکنید.
به نقل از webnoos.com:

من مثال اول رو متوجه نشدم... یعنی $ رو برای سایر کتابخانه ها آزاد کردین ولی خوده JQuery نمی تونه از $ استفاده کنه؟!!!
یعنی این همه مثال در آموزشهای قبلی با $ داشتیم پس چی می شه؟؟؟ یعنی هیچ جا از $ استفاده نکنیم؟؟؟
لطفا توضیح بیشتری بدهید.

در مثال اول، با استفاده از متد noConflict علامت $ را برای استفاده دیگر کتابخانه ها آزاد می کنیم.
جواب جمله آخرتون واضح است، یعنی اگر از دو کتابخانه مختلف استفاده می کنید که در هر دو از علامت $ استفاده می کنند، باید از متد noConflict و یا از روش های دیگری که در مطلب بالا ذکر شد استفاده نمایید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # webnoos.com 1394-02-28 09:03
سلام و ممنون از جواباتون ...
قبلا از طریق ایمیل با خبر میشدم که جواب سوالاتم رو زحمت کشیدین و پاسخ دادین منتها جدیدا ایمیلی برام نمی یاد و اتفاقی به این صفحه مراجعه کردم و جواب شما رو دیدم ... علتش چیه که ایمیل نمیاد دیگه؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر پهلوان صادق 1394-02-28 15:12
سلام، خواهش می کنم ...
اگر در انتهای قسمت "دیدگاه ها" روی لینک "می‌خواهم مشترک شوم" کلیک کنید، به این ترتیب اگر روی دیدگاه یا سوال شما پاسخ داده شود، ایمیلی مبنی بر پاسخگویی براتون ارسال خواهد شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی