যেক্যুয়েরী এর মত আরও বেশ কিছু জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক রয়েছে, যেমন উদাহরণ স্বরূপ Angular, Backbone, Ember, Knockout ইত্যাদির নাম উল্লেখ করা যায়। একই ওয়েব পেজে যদি জাভাস্ক্রিপ্টের অন্য কোন ফ্রেমওয়ার্ক ব্যবহার করতে হয় তবে যেক্যুয়েরী এর noConflict() মেথডটি ব্যবহার করেত হবে।
আমার জানি যে, যেক্যুয়েরীতে $ চিহ্ন ব্যবহার করা হয় শর্টকাট হিসাবে। যেক্যুয়েরী ছাড়াও বেশ কিছু জনপ্রিয় জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক রয়েছে, যেমন Angular, Backbone, Ember, Knockout ইত্যাদি। যদি অন্য কোন জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক ও এরকম শর্টকাট হিসেবে $ ছিনহ ব্যবহার করে তাহলে কি ঘটবে?
যদি দুটি ভিন্ন ফ্রেমওয়ার্ক একই রকম শর্টকাট ছিনহ ব্যবহার করে, তবে এদের থেকে যেকোন একটি ফ্রেমওয়ার্ক কাজ করা বন্ধ করে দিতে পারে । তাই JQuery টিম এটি সম্পর্কে আগেই ভেবেছে, এবং এর সমাধান হিসেবে noConflict() মেথড তৈরি করেছে।
noConflict() পদ্ধতিতে, $ শর্টকাট আইডেন্টিফায়ার রেখেই প্রকাশ করা হয়েছে যাতে অন্য যে কোন স্ক্রিপ্টও এতে ব্যবহার করা যায়। তবে আমরা অবশ্যই এখনও শর্টকার্ট নাম এর পরিবর্তে পূর্ণ নাম ব্যবহার করে jQuery ব্যবহার করব।
নিচে একটি উদাহরণ দেখুন, যেখানে যেক্যুয়েরী এর noConflict() মেথড ব্যবহার করা হয়েছে।
$.noConflict(); jQuery(document).ready(function(){ jQuery("button").click(function(){ jQuery("p").text("jQuery is still working!"); }); });
আমরা খুব সহজেই নিজেদের জন্য শর্টকাট তৈরি করতে পারি। noConflict() মেথড যেক্যুয়েরী তে একটি রেফারেন্স ফেরত দেয়, যা আমরা পরবর্তীতে ব্যবহারের জন্য ভ্যারিয়েবল হিসেবে সংরক্ষণ করে রাখতে পারি। নিচে একটি উদাহরণ দেখুন, যেখানে নিজেদের মত একটি শর্টকাট তৈরি করা হয়েছে।
var jq = $.noConflict(); jq(document).ready(function(){ jq("button").click(function(){ jq("p").text("jQuery is still working!"); }); });
যদি আমাদের কোডে একটি যেক্যুয়েরী code ব্লক থাকে এবং আমরা এটিকে পরিবর্তন করতে না চাই, তবে আমার ready মেথড ব্যবহার করে $ সাইন পারামিটার রুপে ব্যবহার করতে পারি। এটি যেক্যুয়েরী এর ফাংশনের ভিতরে $ সাইন ব্যবহারের অনুমতি দেয় - এর বাহিরে আমাদেরকে যেক্যুয়েরী ব্যবহার করতে হবে। নিচে এর জন্য যেক্যুয়েরী কোড গুলো দেখুন।
$.noConflict(); jQuery(document).ready(function($){ $("button").click(function(){ $("p").text("jQuery is still working!"); }); });