متد 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)
jQuery(document).ready(function(){
jQuery("button").click(function(){
jQuery("p").text("jQuery is still working!");
});
});
همچنین می توانید بجای واژه پیشفرض "jQuery"، میانبر خودتان را ایجاد کنید. به مثال زیر توجه فرمایید:
مثال (متد noconflict در jQuery)
jq(document).ready(function(){
jq("button").click(function(){
jq("p").text("jQuery is still working!");
});
});
اگر بلوکی از کدهای jQuery داشته باشید که از علامت $ بعنوان میانبر استفاده می کنند و نخواهید که علامت $ تغییر کند، می توانید با ارسال علامت $ بعنوان پارامتر به متد ()ready اجازه دهید که داخل این تابع از این علامت استفاده شود. در خارج از آن شما باید از "jQuery" بعنوان میانبر استفاده کنید:
مثال (متد noconflict در jQuery)
jQuery(document).ready(function($){
$("button").click(function(){
$("p").text("jQuery is still working!");
});
});
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 18129
دیدگاهها
سلام خسته نباشید
با تشکر از شما واقعا مطالب مفید است.
چرا وقتی سه تا مثال رو پشت هم نوشتم فقط یه دونش اجرا شد
منظورم اینه که با هر سه روش که دالر رو آزاده میکنه مینویستم ولی فقط اولین کدم اجرا مبشه مثلا این کدهای زیر رو نگاه کنید
$.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 ها رو بر ندارم روش های دگ اجرا نمیشه چرا دلیلش چیه
با سلام.
من همین کدا رو توی یه فایل paste کردم. این کدها از لحاظ نگارش خطا داره. بعدش سعی کن تو صفحه یه بار از document.ready استفاده کنی. برای استفاده از تابع هم نیازی نیست علامت $ رو قبلش بیاری.
یعنی کلا یه بار اول کد هام از ready استفاده کنم دگ نمیخواد ؟
بعد منظورت از برای استفاده از تابع نیازی نیس $ بذارم چیه ؟ یه مثال بزن واسم ممنون
رویداد کلیک رو توی ready بنویس.
برای صدا زدن تابع هم کافیه اسم رو به همراه پارامترهای موردنیازش بیاری. اگر پارامتر نداشت، پرانتز رو باید خالی بذاری.
این آموزش یه خورده مبهم بود...
یعنی اگر از کتابخانه های دیگر استفاده نکنیم و فقط از کتابخانه ی JQuery استفاده کنیم می توانیم همیشه $ بگذاریم؟
خب ما که نمیدونیم افزونه های دیگه از کتابخانه های دیگه بهره بردن یا نه پس به این ترتیب اصلا نباید از $ استفاده کنیم ؟ من مثال اول رو متوجه نشدم... یعنی $ رو برای سایر کتابخانه ها آزاد کردین ولی خوده JQuery نمی تونه از $ استفاده کنه؟!!!
یعنی این همه مثال در آموزشهای قبلی با $ داشتیم پس چی می شه؟؟؟ یعنی هیچ جا از $ استفاده نکنیم؟؟؟
لطفا توضیح بیشتری بدهید.
به نقل از webnoos.com:
بله دقیقاً درسته ...
به نقل از webnoos.com:
افزونه های مختلفی را در جوملا و یا وردپرس می توان استفاده نمود و قبل از نصب آنها حتماً باید بررسی کنید که از کدام کتابخانه های JavaScript استفاده می کنند. به نظرم لود کردن 2 کتابخانه مختلف سمت کاربر کار درستی نیست، این را بخاطر حجم کتابخانه می گم، و باعث کند شدن لود سایت، بار اول خواههد شد، پس اگر کامپوننت یا افزونه ای را نصب کردید که از کتابخانه jQuery استفاده می کند، از این به بعد بهتر است، افزونه هایی که از دیگر کتابخانه ها استفاده می کنند را نصب نکنید.
به نقل از webnoos.com:
در مثال اول، با استفاده از متد noConflict علامت $ را برای استفاده دیگر کتابخانه ها آزاد می کنیم.
جواب جمله آخرتون واضح است، یعنی اگر از دو کتابخانه مختلف استفاده می کنید که در هر دو از علامت $ استفاده می کنند، باید از متد noConflict و یا از روش های دیگری که در مطلب بالا ذکر شد استفاده نمایید.
سلام و ممنون از جواباتون ...
قبلا از طریق ایمیل با خبر میشدم که جواب سوالاتم رو زحمت کشیدین و پاسخ دادین منتها جدیدا ایمیلی برام نمی یاد و اتفاقی به این صفحه مراجعه کردم و جواب شما رو دیدم ... علتش چیه که ایمیل نمیاد دیگه؟
سلام، خواهش می کنم ...
اگر در انتهای قسمت "دیدگاه ها" روی لینک "میخواهم مشترک شوم" کلیک کنید، به این ترتیب اگر روی دیدگاه یا سوال شما پاسخ داده شود، ایمیلی مبنی بر پاسخگویی براتون ارسال خواهد شد.