Showing posts with label JQUERY. Show all posts
Showing posts with label JQUERY. Show all posts

জোকোয়েরি টিউটোরিয়াল | ভূমিকা (jQuery bangla tutorial)



জোকোয়েরি হচ্ছে জাভাস্ক্রিপ্টের একটা ফ্রেমওয়ার্ক বা ফাংশন লাইব্রেরি।এখানে শত শত ফাংশন আগে থেকেই তৈরী করা আছে যা আপনি ব্যবহার করে আপনার সাইটকে আরও প্রানবন্ত করতে পারেন।এই কাজগুলি শুধু raw জাভাস্ক্রিপ্ট ব্যবহার করেও করতে পারবেন তবে এতে অনেক বেশি কোড লিখতে  হবে এবং প্রচুর সময় লাগবে।জেকোয়েরির মত আরও অনেক জাভাস্ক্রিপ্টের ফ্রেমওয়ার্ক আছে যেমন Mootools,Extjs,Dojo,Prototype ইত্যাদি। তবে জেকোয়েরি এবং এরপর মোটুলস এখন সবচেয়ে বেশি বিখ্যাত।জেকোয়েরি বিখ্যাত হওয়ার অনেক কারনের মধ্যে রয়েছে
-সব ব্রাউজার সাপোর্ট করে
-সহজ এবং বিস্তারিত ডকুমেন্টেশন বিদ্যমান
-প্রচুর প্লাগিন বিনামুল্যে পাওয়া যায়।
-সিএসএস ৩ এর সিলেক্টর সাপোর্ট
এছাড়াও আরও অনেক সুবিধা আছে।

জেকোয়েরি শেখার আগে যেসব ভাল জানতে হবে
১. এইচটিএমএল
২. সিএসএস (দক্ষ হতে হবে)
৩. জাভাস্ক্রিপ্ট
 টিউটোরিয়াল লিঙ্ক সূমহঃ

জেকোয়েরি দিয়ে যেসব করা হয়:
*বিভিন্ন সাইটে ড্রপডাউন মেনু দেখেছেন তো?এসব সাধারনত জেকোয়েরি দিয়ে করা।
*ইমেজ স্লাইডশো
*ট্যাব সিস্টেম
*যদিও জেকোয়েরি ব্রাউজার স্ক্রিপ্টিং তবুও এখানে এজাক্স ব্যবহার করে ডেটাবেস থেকে ডেটা তুলে আনা যায়,সাইট পুনরায় লোড হওয়া ছাড়াই।যেমন বিভিন্ন সাইটে দেখবেন রেজিস্ট্রেশনের সময় মেইল ফিল্ডে মেইল ঠিকানা দেয়ার সাথে সাথেই বলে দেয় যে এই মেইল ঠিকানা ইতোমধ্যে ব্যবহার করা হয়েছে বা এই ইউজার নাম আগেই নেয়া হয়েছে।এসব জেকোয়েরি এবং এজাক্স দিয়ে করা যায়।
আরও অনেক কাজ হয়, আমরা ধারাবাহিক টিউটোরিয়ালে এমন প্রচুর স্ক্রিপ্ট নিয়ে আলোচনা করব।

জেকোয়েরি তে কাজ করার জন্য প্রথমেই ফ্রেমওয়ার্কটি ডাউনলোড করে আপনার এইচটিএমএল ফাইলে যুক্ত করে দিতে হবে।পিএইচপি ফ্রেমওয়ার্কের মত এখানে কোন কঠিন কনফিগারেশন নেই শুধু এক্সটার্নাল জাভাস্ক্রিপ্ট যেভাবে <script> ট্যাগ দিয়ে যোগ করে সেভাবেই জেকোয়েরির ফ্রেমওয়ার্কটি এইচটিএমএল ফাইলে   যোগ করলেই হবে (<head> ট্যাগের ভিতর)।
http://jquery.com/ এখান থেকে জেকোয়েরির সর্বশেষ ভার্সনটি ডাউনলোড করে নিন।
-উপরের সাইটটিতে ঢুকে ডাউনলোড বাটনে ক্লিক করলে (development বা production যেকোনটি ডাউনলোড করলেই হবে) যে স্ক্রিপ্ট টি আসবে সেটি jquery_latest.js নামে সেভ (বা যেকোন নামে) করুন।
   টিউটোরিয়ালগুলি অনুশীলনের সর্বোত্তম পন্থা হচ্ছে কোডগুলি নিজে লিখুন এবং এরপর কোড দেখে দেখে বোঝার চেষ্টা করুন।যেকোন টিউটোরিয়ালের ক্ষেত্রে এটা প্রযোজ্য।আমরা এখানে যে মেথডগুলি ব্যবহার করেছি সেগুলি এক একটা দিয়ে অনেক কাজ করা সম্ভব এবং আমরা সবগুলির ব্যাখ্যা দেইনি।শুধু টিউটোরিয়াল কনটেক্সট এ মেথডগুলির ব্যাখ্যা দেয়া আছে।

প্রথম জেকোয়েরি এপ্লিকেশন (jQuery first application : Basic)



প্রথমে যেকোন নামে একটি ফোল্ডার তৈরী করে ডাউনলোডকৃত জেকোয়েরি ফ্রেমওয়ার্কটি (jquery_latest.js) এই ফোল্ডারে রাখুন।এই ফোল্ডারে আরও দুটি ফাইল বানান ১. index.html এবং ২. style.css
এবার index.html ফাইলে নিচের কোড লিখুন
01.<!DOCTYPE html>
02.<html>
03.<head>
04.<script  src="/jquery_latest.js" type="text/javascript"></script>
05.<script type="text/javascript">
06.$(document).ready(function(){
07.$(".myheader").hide();
08.$(".mypara").click(function(){
09.$(".myheader").show();
10.});
11.});
12.</script>
13.</head>
14.<body>
15.<h2 class="myheader">JQUERY tutorials</h2>
16.<p class="mypara">Webcoachbd is nice tutorial site</p>
17.</body>
18.</html>
আউটপুট
নিচে "Webcoachbd is nice tutorial site" এই লাইনে ক্লিক করুন
Webcoachbd is nice tutorial site
ব্যাখ্যা:৪ নম্বর লাইনটি দেখুন,এভাবে (জেকোয়েরির ফ্রেমওয়ার্কটি) স্ক্রিপ্টটি লোড করেছি।আপনি চাইলে এই ফ্রেমওয়ার্ক অনলাইন থেকে লোড করাতে পারেন,যেমন গুগল এই ফ্রেমওয়ার্ক তার লাইব্রেরিতে রেখেছে এবং আপনি ৪ নম্বর লাইন বাদ দিয়ে নিচের মত লিখলেও হবে
1.<script  src="https://ajax.googleapis.com/ajax/libs
2./jquery/1.8.1/jquery.min.js" type="text/javascript">
3.</script>
script ট্যাগের src এট্রিবিউটে ফাইলটির ঠিকানা দিতে হয়।এরপর আবার <script> </script> ট্যাগের ভিতর জেকোয়েরির কোড লিখেছি,
1.$(document).ready(function(){
2.$(".myheader").hide();
3.$(".mypara").click(function(){
4.$(".myheader").show();
5.});
6.});
7.</script>
যেহেতু  এইচটিএমএল এর এলিমেন্ট নিয়েই জেকোয়েরির কাজ তাই এইচটিএমএল আগে লোড করে তারপর জেকোয়েরিকে এক্সিকিউট করানো উচিৎ।এখানে প্রথম লাইন দ্বারা এই কাজটিই হচ্ছে অর্থ্যাৎ  $(document).ready(); দ্বারা বলা হচ্ছে যে আগে পুরো এইচটিএমএল ডকুমেন্ট টুকু লোড হবে তারপর জেকোয়েরির ফাংশনগুলি কাজ শুরু করবে।(তাই দেখুন ready ফাংশনের প্রথম বন্ধনীর মধ্যে বাকি সবগুলি কোড বা ফাংশনগুলি রাখা হয়েছে)
** $(document).ready(); এই লাইনকে সংক্ষিপ্ত করে নিচের মত করে লেখা যায়
1.$(function(){
2.//code goes here
3.});
এরপর আসল জেকোয়েরির কোড শুরু হয়েছে।$(".myheader").hide(); এই লাইনে myheader নামে যে ক্লাসটি এইচটিএমএল কোডে আছে সেটি প্রথমে সিলেক্ট করা হয়েছে।
উল্লেখ্য যে, জেকোয়েরি কোড লেখার নিয়মই এটা যে সব আগে ডলার সাইন ($) বা jQuery
এই শব্দটি লিখে এরপর প্রথম বন্ধনীতে সিঙ্গেল বা ডাবল কোটেশন এর ভিতর সিএসএস সিলেক্টর টি লিখতে হয় (যে এইচটিএমএল এলিমেন্টটি তে কাজ করবেন তার আইডি, ক্লাস অর্থ্যাৎ তার সিলেক্টর)।সবশেষে ডট (.) চিহ্ন দিয়ে জেকোয়েরির মেথডটি দিতে হয়।যেমন আমি দিয়েছি hide() মেথড।এই মেথড সিলেক্টেড এলিমেন্টকে লুকিয়ে রাখে।এরুপ আরও অনেক ফাংশন তাদের সাইটে গিয়ে দেখতে পারেন,সেখানে বিস্তারিত বিবরন আছে।এই ফাংশনগুলিই ভালভাবে জানতে হবে এবং প্রয়োগ শিখতে হবে।

এরপরের লাইনে mypara ক্লাস সম্বলিত যে প্যারাগ্রাফটি আছে সেটি সিলেক্ট করেছি এবং ডট দিয়ে click ইভেন্ট হ্যান্ডলার ব্যবহার করেছি।এখন এই প্যারাগ্রাফের উপর ক্লিক করলে (অর্থ্যাৎ ক্লিক ইভেন্ট ঘটলে) ঐটা হবে যেটা এই click() ইভেন্ট হ্যান্ডলার এর ভিতর আছে (প্রথম বন্ধনীর ভিতর)।

এখন আমার myheader ক্লাস সম্বলিত হেডার টি বের করে আনার দরকার যখন কেউ mypara ক্লাস সম্বলিত প্যারাগ্রাফে ক্লিক করবে।তাই myheader সিলেক্ট করেছি এবং show() মেথড দিয়ে বের করে এনেছি যেটা পেজ লোড হবার পর লুকানো থাকবে।show ফাংশন এভাবেই লুকানো এলিমেন্ট কে বের করে আনার জন্য ব্যবহৃত হয়।
এই হল জেকোয়েরির একদম মৌলিক ধারনা।জেকোয়েরির সাইটে গিয়ে আরও কিছু ফাংশন দেখুন এবং এভাবে ছোট ছোট কোড লিখে অনুশীলন করুন তাহলে ধারনা স্বচ্ছ হয়ে যাবে।

জেকোয়েরি এলিমেন্ট সিলেকশন (jQuery Element Selection)



একটা এইচটিএমএল ডকুমেন্টের যেকোন এলিমেন্ট বা কোন এলিমেন্টের আইডি/ক্লাস দিয়ে যেমন আমরা সেই এলিমেন্ট সিলেক্ট করে সেটার জন্য সিএসএস রুল লিখে থাকি।জেকোয়েরিতেও হুবহু একইভাবে একটা এলিমেন্টকে সিলেক্ট করতে হয়।যেমন আমি যদি নিচের ডকুমেন্টের সব প্যারাগ্রাফ সিলেক্ট করতে চাই (জেকোয়েরিতে) তাহলে কোড লিখতে হবে এরকম-
index.html ফাইল
01.<html>
02.<head>
03.<link rel="stylesheet" type="text/css" href="/style.css"/>
04.<script src="/jquery_latest.js" type="text/javascript"></script>
05.<script type="text/javascript">
06.$(document).ready(function(){
07.$('p').click(function(){
08.alert('You clicked on a paragraph');
09.});
10.});
11.</script>
12.</head>
13.<body>
14.<h1 id="tutorial">JQuery Tutorials</h1>
15.<p id="first_para">Bangladesh is a country of natural beauty</p>
16.<p class="webcoachbd">Webcoachbd DOT com is the largest bengali tutorial site</p>
17.<p class="webcoachbd">There are 30 tutorial on JQuery in Webcoachbd</p>
18.</body>
19.</html>
style.css ফাইল
1.#tutorial{
2.color:green;
3.font-size:20px;
4.text-align:center;
5.font-family:Verdana;
6.}

index.html রান করান এবং যেকোন একটা প্যারাগ্রাফের উপর ক্লিক করুন তাহলে একটা এলার্ট দেখাবে নিচের মত-

JQuery Tutorials

Bangladesh is a country of natural beauty
Webcoachbd DOT com is the largest bengali tutorial site
There are 30 tutorial on JQuery in Webcoachbd
কারন $(‘p’) দ্বারা আমি এই ডকুমেন্টের সকল প্যারাগ্রাফকে  সিলেক্ট করেছি এবং যেকোন প্যারাগ্রাফে ক্লিক করলে এলার্ট দিবে এই ফাংশন লিখে দিয়েছি।
যাইহোক এখন যদি হেডিং সিলেক্ট করতে চাই তাহলে তার আইডি ধরে নিচের মত সিলেক্ট করতে পারি যেমন
1.$(‘#tutorial’)
** এই টুকু কোড উপরের কোডের $(‘p’) এর জায়গায় প্রতিস্থাপন করে দিন তাহলে এবার হেডিংটির উপরে ক্লিক করলে এলার্ট আসবে।
যদি webcoachbd ক্লাস সম্বলিত প্যারাগ্রাফদুটি সিলেক্ট করতে চাই তাহলে
1.$(‘.webcoachbd’)
এভাবে দিতে হবে।
যদি first_para আইডি সম্বলিত প্যারাগ্রাফটি সিলেক্ট করতে চাই তাহলে
$(‘#first_para’) এভাবে দিতে হবে।
এই প্যারাগ্রাফটি $(‘#tutorial + p’) এভাবেও সিলেক্ট করা যাবে।
যদি হেডিং এবং webcoachbd ক্লাস সম্বলিত প্যারাগ্রাফদুটি সিলেক্ট করতে চাই তাহলে এভাবে
1.$(‘#tutorial,.webcoachbd’)
অর্থ্যাৎ সিএসএস এ যেভাবে এবং যেসব সিলেক্টর দিয়ে এইচটিএমএল এলিমেন্ট সিলেক্ট করে সেগুলিই।সিলেক্টর গুলি পরীক্ষা করার জন্য $(‘p’) এর জায়গায় আপনার তৈরী এই সিলেক্টর গুলি দিয়ে ক্লিক কর দেখুন।

**সিএসএস সিলেক্টর এ আপনি যত দক্ষ হবেন,জেকোয়েরির কোড তত ভাল লিখতে পারবেন।

জেকোয়েরি দিয়ে সিএসএস প্রোপার্টিজ যেভাবে ধরতে হয়:
জেকোয়েরি দিয়ে এপ্লিকেশন তৈরী করার সময় সিএসএস এর প্রোপার্টিজ চেক করার প্রয়োজন হতে পারে।একটা এলিমেন্টের জন্য যেসব সিএসএস আছে তার থেকে আপনি চাইলে যেকোনটি পরীক্ষা করে দেখতে পারেন যেমন উপরের জেকোয়েরি কোডটুকু প্রতিস্থাপন করুন নিচের কোড দ্বারা।
1.$(document).ready(function(){
2.$('#tutorial').click(function(){
3.var align = $('#tutorial').css('textAlign');
4.alert(align);
5.});
6.});
এবার হেডিং এ ক্লিক করুন তাহলে এলার্টে center লেখাটি দেখাবে
প্রয়োগ দেখুন কারন #tutorial এর সিএসএস লিখেছি এভাবে
1.#tutorial{
2.color:green;
3.font-size:20px;
4.text-align:center;
5.font-family:Verdana;
6.}
** css() হচ্ছে জেকোয়েরির একটা মেথড যেটা দিয়ে কোন এলিমেন্টে সিএসএস প্রোপার্টিজ চেক করা যায় (যেমন আমি করলাম) আবার নতুন সিএসএস প্রোপার্টিজও যোগ করা যায়।

**textAlign এর জায়গায় text-align এভাবে দিলেও কাজ হবে।

css() মেথড দিয়ে নতুন সিএসএস যোগ করা:
আপনার ডকুমেন্টটির জেকোয়েরি কোডটুকু এবার নিচের কোড দিয়ে প্রতিস্থাপন করুন
1.$(document).ready(function(){
2.$('#first_para,.webcoachbd').click(function(){
3.$(this).css('color', 'red');
4.});
5.});
আউটপুট:

প্রয়োগ দেখুন এবার পেজটি রিলোড করে যেকোন প্যারাগ্রাফে ক্লিক করুন সাথে সাথে তার রং লাল হয়ে যাবে।
**css মেথডে এভাবে আগে কোটেশনের ভিতর সিএসএস এর প্রোপার্টিজ এবং কমা দিয়ে আবার কোটেশনের ভিতর মান দিতে হয়।এই মেথড দিয়ে একসাথে একাধিক সিএসএস যোগ করতে পারেন এভাবে-
css({'color : red', 'backgroundColor : yellow'});

** যেহেতু first_para আইডি এবং webcoachbd ক্লাস সম্বলিত প্যারাগ্রাফে ক্লিক করলে শুধুমাত্র সেই প্যারাগ্রাফেরেই রং পরিবর্তন চাচ্ছি তাই $(this) দিয়েছি,আপনি এখানে this এর জায়গায়  '#first_para,.webcoachbd' এভাবে দিলেও একি কাজ হতো।
this এরপর বিভিন্ন জায়গায় ব্যবহার হবে।এটা বর্তমান সিলেকশনকে ধরে রাখে।

**যদি এই প্যারাগ্রাফগুলিতে ক্লিক করলে অন্য কোন এলিমেন্টের সিএসএস পরিবর্তন করতে চান তাহলে this এর জায়গায় সেই এলিমেন্টের সিলেক্টর দিলেই কাজ হবে।যেমন
1.$(document).ready(function(){
2.$('#first_para,.webcoachbd').click(function(){
3.$('#tutorial').css('color', 'red');
4.});
5.});
আউটপুট:

প্রয়োগ দেখুন এবার প্যারাগ্রাফগুলিতে ক্লিক করলে হেডিং এর রং পরিবর্তন হবে।
এভাবে একটা ডকুমেন্টে অনেক সিলেক্টর দিন,জেকোয়েরি দিয়ে সিলেক্ট করুন এবং সিএসএস পরিবর্তন করে অনুশীলন করুন।সামনের টিউটোরিয়ালে আরো অন্যন্য বিষয় নিয়ে আলোচনা হবে।

জেকোয়েরি ইভেন্ট হ্যান্ডলার (jQuery Event Handler Tutorial in Bangla)



ইভেন্ট:
===========================
ওয়েব পেজে ইউজার কখনও মাউস ক্লিক করে(কোন একটা লিংক বা যেকোন কিছুর উপর), কিবোর্ড দিয়ে টাইপ করে (ফর্ম থাকলে), কখনও কোন একটা এলিমেন্টের উপর মাউস নিয়ে যেতে (মাউস হোভার) পারে এটা কোন লিংক, প্যারাগ্রাফ, ইনপুট ফিল্ড বা যেকোন কিছুর উপরে হতে পারে। এগুলি হচ্ছে এক একটা ইভেন্ট। যেমন কোন একটা প্যারাগ্রাফ বা বাটনের উপর ক্লিক করলেন, তাহলে এটা একটা ইভেন্ট (ক্লিক ইভেন্ট)। কোন একটা এলিমেন্টের উপর মাউস নিয়ে গেলেন এটা একটা ইভেন্ট (মাউস হোভার ইভেন্ট)। এরুপ আরো ইভেন্ট আছে যেমন scroll ইভেন্ট, load ইভেন্ট, focus ইভেন্ট ইত্যাদি।

ইভেন্ট হ্যান্ডলার:
====================
ওয়েব পেজে এমন অনেক ইভেন্ট ঘটে, এই ইভেন্টগুলি ধরে আমরা ইচ্ছে করলে কোন কাজ করতে পারি, কোন জেকোয়েরির কোড এক্সিকিউট করাতে পারি। জেকোয়েরিতে অনেক ফাংশন আছে যেগুলি শুধু এসব কোন ইভেন্ট ঘটলে এক্সিকিউট হবে এই ফাংশনগুলিকে বলে ইভেন্ট হ্যান্ডলার। ready(), click(), hover() এরুপ আরো অনেক ইভেন্ট হ্যান্ডলার আছে। যখনি একটা ইভেন্ট ঘটল, এটাকে টেকনিকাল ভাষায় বলে অমুক ইভেন্ট fire হল। একটা ইভেন্ট fire হওয়ার সাথে সাথে ঐ ইভেন্ট সংশ্লিষ্ট হ্যান্ডলার এর ভিতর কোড এক্সিকিউট হয়। যেমন এর আগের টিউটোরিয়ালের প্রথম উদাহরনে p তে ক্লিক হওয়ার সাথে সাথে click() এর ভিতরের কোড রান করেছে (একটা এলার্ট হবে এরুপ কোড)

কোন একটা এলিমেন্ট সিলেক্ট করে এরপর যদি ready() ইভেন্ট হ্যান্ডলার ব্যবহার করেন তাহলে ঐ এলিমেন্টটি পেজে সম্পূর্ন লোড হওয়ার পর ready() এর ভিতর কোডগুলি কাজ করা শুরু করবে। যদি এলিমেন্ট লোড হওয়া পূর্ন না হয় তাহলে এর ভিতরের কোড কাজ করবেনা বরং অপেক্ষা করবে। সাধারনত জেকোয়েরির কোডের শুরুতেই এই হ্যান্ডলার ব্যবহার করে অর্থ্যাৎ পুরো পেজ সম্পূর্ন লোড হবে এরপর জেকোয়েরির অন্যসব কোডগুলি কাজ করা শুরু করবে। এটাও এর আগের টিউটোরিয়ালে দেখানো হয়েছে।

অনুরুপ অন্যান্য ইভেন্ট হ্যান্ডলার এর ক্ষেত্রেও প্রযোজ্য যেমন $('#test').click() এভাবে থাকলে এর অর্থ হচ্ছে test আইডি সম্বলিত এলিমেন্টটি তে ক্লিক করার পর click() ইভেন্ট হ্যান্ডলার এর ভিতরের কোড এক্সিকিউট হবে।

এখন উপরের এই প্যারাগ্রাফটির click এর জায়গায় hover শব্দটি প্রতিস্থাপন করুন অথবা যেকোন ইভেন্ট হ্যান্ডলার এর নাম প্রতিস্থাপন করুন এবং লাইনটি পড়ুন।;)

কিছু বহুল ব্যবহৃত ইভেন্ট এবং ইভেন্ট হ্যান্ডলার (জেকোয়েরি) এর তালিকা
ইভেন্ট ইভেন্ট হ্যান্ডলার
ready এটা ডকুমেন্ট ইভেন্ট। একটা ডকুমেন্ট (পেজ) সম্পূর্ন লোড হয়ে রেডি হলে এরপর এই ইভেন্ট ফায়ার হয়। সাধারনত সব জেকোয়েরির কোড এই ইভেন্ট হ্যান্ডলার এর ভিতরে থাকে কারন আমরা চাই, পেজ রেডি হওয়ার পর আমাদের অন্যান্য জেকোয়েরি কাজ শুরু করুক। $(document).ready(function(){//code..});
click যেকোন এলিমেন্টে ক্লিক করলে এই ইভেন্ট ফায়ার হবে। যেমন "test" আইডি সম্বিলত এলিমেন্টে ক্লিক করলে যদি কিছু করতে চাই তাহলে $('#test').click(function(){any jQuery code here});
submit যেকোন ফর্ম সাবমিট করলে submit ইভেন্ট ফায়ার হবে। যেমন "test" আইডি সম্বিলত ফর্ম সাবমিট করলে যদি কিছু করতে চাই তাহলে $('#test').submit(function(){any jQuery code here});
blur এটাও একটা ফর্ম ইভেন্ট, ইনপুট বক্স (ফর্ম এলিমেন্ট) থেকে মাউস সরিয়ে অন্য কোথাও ক্লিক করলে (ফোকাস চলে যাবার সাথে সাথে) blur ইভেন্ট ফায়ার হয়। যেমন "test" আইডি ইনপুট বক্সে ব্লার করলে যদি কিছু করতে চাই তাহলে $('#test').blur(function(){any jQuery code here});
change ফর্ম ইভেন্ট। ফর্ম এলিমেন্টের মান (যেমন ড্রপ ডাউন অপশন) পরিবর্তন করার সময় ফায়ার হয়। যেমন "test" আইডি সম্বিলত ড্রপডাউন থেকে অপশন পরিবর্তন করলে যদি কিছু করতে চাই তাহলে $('#test').change(function(){any jQuery code here});
focus ফর্ম ইভেন্ট। ফর্ম এলিমেন্টে যখন ফোকাস হবে তখন ফায়ার হয়। যেমন "test" আইডি সম্বিলত এলিমেন্টে মাউস ফোকাস করলে যদি কিছু করতে চাই তাহলে $('#test').focus(function(){any jQuery code here});
select যেকোন এলিমেন্ট সিলেক্ট করার সময়ই ফায়ার হয়। যেমন "test" আইডি সম্বিলত এলিমেন্ট সিলেক্ট করলে যদি কিছু করতে চাই তাহলে $('#test').select(function(){any jQuery code here});।
dblclick এটা মাউস ইভেন্ট। কোন এলিমেন্টে ডাবল ক্লিক করলে এটা ফায়ার হবে। যেমন "test" আইডি সম্বিলত এলিমেন্টে ডাবল ক্লিক করলে যদি কিছু করতে চাই তাহলে $('#test').dblclick(function(){any jQuery code here});
mouseover মাউস ইভেন্ট। কোন এলিমেন্টের উপর মাউস নিয়ে গেলে ফায়ার হয়। যেমন "test" আইডি সম্বিলত এলিমেন্টে মাউস হোভার করলে যদি কিছু করতে চাই তাহলে $('#test').hover(function(){any jQuery code here});
load এটা উইন্ডো ইভেন্ট। ফায়ার হয় যখন পেজ লোড শেষ হয়। যেমন উইন্ডো লোড হলে যদি কিছু করতে চাই $(window).load(function(){any jQuery code here});
resize এটাও উইন্ডো ইভেন্ট। ফায়ার হয় যদি উইন্ডো রিসাইজ করা হয় তখন। যেমন উইন্ডো রিসাইজ করার সময় যদি কিছু করতে চাই $(window).resize(function(){any jQuery code here});
 আরও অনেক ইভেন্ট এবং তাদের সংশ্লিষ্ট ইভেন্ট হ্যান্ডলার আছে। উপরে শুধু গুরত্বপূর্নগুলি আলোচনা করা হয়েছে।

জেকোয়েরি নতুন ক্লাস যোগ/মোছা (jQuery class add/remove)



জেকোয়েরিতে addClass() এবং removeClass() নামে দুটি মেথড আছে।এগুলি দিয়ে আপনি যেকোন এলিমেন্টে একটা নতুন সিএসএস ক্লাস যোগ বা বাদ দিতে পারবেন।ওয়েব এপ্লিকেশন তৈরীর সময় এরুপ প্রায়ই লাগে যে,কোন বাটন,ট্যাব ইত্যাদি কোথাও ক্লিক বা মাউস হোভার করলে ডকুমেন্টের কোন অংশে সিএসএস পরিবর্তিত হবে।যেমন নিচের এরুপ একটা উদাহরন দিচ্ছি যেখানে একটা বাটনে ক্লিক করলে তার নিচে প্যারাগ্রাফটির রং লাল হবে আবার অন্য বাটনটিতে ক্লিক করলে একই প্যারাগ্রাফটির রং সবুজ হবে।
index.html ফাইল
01.<html>
02.<head>
03.<link rel="stylesheet" href="/style.css" type="text/css"/>
04.<script src="/jquery_latest.js" type="text/javascript"></script>
05.<script type="text/javascript">
06.$(document).ready(function(){
07.$('#colorRed').click(function(){
08.$('#webcoachbd').addClass('redPara')
09..removeClass('greenPara');
10.});
11.$('#colorGreen').click(function(){
12.$('#webcoachbd').addClass('greenPara')
13..removeClass('redPara');
14.});
15.});
16.</script>
17.</head>
18.<body>
19.<button id="colorRed">Click here for red color</button>
20.<button id="colorGreen">Click here for green color</button>
21.<p id="webcoachbd">JQuery is a popular javascript framework</p>
22.</body>
23.</html>
আউটপুট:

JQuery is a popular javascript framework
ব্যাখ্যা:এখানে জেকোয়েরি কোডে দেখুন প্রথমে ডকুমেন্ট রেডি করে (ডকুমেন্ট রেডি করার ফাংশনগুলি নিয়ে আগের টিউটোরিয়ালগুলিতে আলোচনা হয়েছে) এরপর coloRed আইডি সম্বলিত বাটনটি সিলেক্ট করেছি এবং এখানে ক্লিক করলে webcoachbd আইডি সম্বলিত প্যারাগ্রাফে একটি redPara নামে ক্লাস যোগ হবে।addClass মেথডটিতে স্ট্রিং হিসেবে যে প্যারামিটারটি পাঠাবেন সেটি হবে ক্লাসের নাম।

*জেকোয়েরিতে এভাবে একটা আইডি সিলেক্ট করার পর ডট চিহ্ন দিয়ে এর উপর চালানো মেথডটির নাম দিতে হয় যেমন আমি দিয়েছি $(‘#webcoachbd’).addClass(‘redPara’)

*কোন একটা সিলেক্টেড এলিমেন্টে একসাথে অনেকগুলি মেথড অপারেশন চালাতে পারে যেমন আমি একসাথে দুটি মেথড (addClass এবং removeClass) চালিয়েছি webcoachbd আইডি সিলেক্ট করে।$(‘#webcoachbd’).addClass(‘redPara’).removeClass(‘greenPara’);

*removeClass মেথডটিও addClass এর মতই, এই মেথডটি দিয়ে পুর্বে যোগকৃত ক্লাস মুছে দিতে পারেন।
যাইহোক এবার সিএসএস ফাইলে নিচের কোডটুকু লিখুন।যেসমস্ত ক্লাস যোগ হল সেগুলির জন্য যেকোন সিএসএস লিখুন।যেমন আমি লিখেছি।
style.css ফাইল
01.#webcoachbd{
02.font-weight:bolder;
03.font-family:Verdana;
04.}
05..redPara{
06.color:#f00;
07.}
08..greenPara{
09.color:green;
10.}
এইটুকু ব্যাখ্যা হচ্ছে যখন colorRed আইডি সম্বলিত বাটনে কেউ ক্লিক করবে।এরপর colorGreen বাটনে ক্লিক করলে তার জন্য যে কোড লেখা হয়েছে সেটারও ব্যাখ্যা একই শুধু আইডি এবং ক্লাসের নাম পরিবর্তন হবে।

* তাহলে সবশেষে ফলাফল দাড়াচ্ছে colorRed বাটনে ক্লিক করলে webcoachbd আইডি সম্বলিত প্যারাতে redPara নামে একটি ক্লাস যোগ হবে এবং greenPara নামের কোন ক্লাস থাকলে সেটা মুছে যাবে (যে ক্লাস অপর বাটনটিতে ক্লিক করলে যোগ হবে )।
এবং একইভাবে colorGreen বাটনে ক্লিক করলে webcoachbd আইডি সম্বলিত প্যারাতে greenPara নামে একটি ক্লাস যোগ হবে এবং redPara নামের কোন ক্লাস থাকলে সেটা মুছে যাবে (যে ক্লাস অপর বাটনটিতে ক্লিক করলে যোগ হবে )।

জেকোয়েরি each() মেথড (jQuery each)



each মেথড জেকোয়েরিতে for লুপের মত।ধরুন আপনার ডকুমেন্টে একটা টেবিল আছে এবং এখানে অনেকগুলি সারি (row) আছে,তাহলে আপনি সব row কে এভাবে সিলেক্ট করতে পারেন।
1.$('table tr')
এখন যদি এই টেবিলে ১০টি সারি থাকে তাহলে সব সিলেক্ট হল।এখন এই ১০ টি সিলেক্টেড এলিমেন্টকে আপনি each মেথড দিয়ে লুপে ফেলে দিতে পারেন।এরপর এর উপর যেকোন একশন নিতে পারেন যেকোনটির উপর।শুধু টেবিল নয়,হতে পারে ul এর ভিতর অনেক li আছে বা একটা ডিভের সব a ট্যাগ ইত্যাদি সিলেক্ট করে এভাবে লুপ বানাতে পারেন।কেন এত লুপিং লাগে?কারন
-সিলেক্টেড এলিমেন্টগুলি নিয়ে অ্যারে তৈরী করে প্রত্যেকটি এলিমেন্ট একটি ইউনিক ইনডেক্স পায় ফলে ইচ্ছে করলে যেকোন এলিমেন্ট এই each মেথড দিয়েই ধরা যায়।
-যেমন আমি টেবিলের সারিগুলির ব্যাকগ্রাউন্ড রং যদি alternate করে দেখতে চাই তাহলে প্রতিটি জোর বা বিজোর সারিতে (tr) গিয়ে ক্লাস যোগ করার পরিবর্তে each মেথড দিয়ে লুপিং করে তা করা যায়।
index.html ফাইল
01.<!doctype html>
02. 
03.<head>
04. 
05.<title>Webcoachbd Jquery tutorials!</title>
06.<link rel="stylesheet" href="/style.css" type="text/css"/>
07. 
08.<script src="/jquery_latest.js" type="text/javascript"></script>
09.<script src="/script.js" type="text/javascript"></script>
10.</head>
11.<body>
12.<table>
13.<thead>
14.<tr>
15.<th>ID</th>
16.<th>Name</th>
17.<th>Mail</th>
18.<th>Phone</th>
19.<th>Address</th>
20.</tr>
21.</thead>
22.<tbody>
23.<tr>
24.<td>1</td>
25.<td>Rejoanul Alam</td>
26.<td>rejoan.er AT gmail DOT com</td>
27.<td>123456</td>
28.<td>JU</td>
29.</tr>
30.<tr>
31.<td>1</td>
32.<td>Rejoanul Alam</td>
33.<td>rejoan.er AT gmail DOT com</td>
34.<td>123456</td>
35.<td>JU</td>
36.</tr>
37.<tr>
38.<td>1</td>
39.<td>Rejoanul Alam</td>
40.<td>rejoan.er AT gmail DOT com</td>
41.<td>123456</td>
42.<td>JU</td>
43.</tr>
44.<tr>
45.<td>1</td>
46.<td>Rejoanul Alam</td>
47.<td>rejoan.er AT gmail DOT com</td>
48.<td>123456</td>
49.<td>JU</td>
50.</tr>
51.<tr>
52.<td>1</td>
53.<td>Rejoanul Alam</td>
54.<td>rejoan.er AT gmail DOT com</td>
55.<td>123456</td>
56.<td>JU</td>
57.</tr>
58.<tr>
59.<td>1</td>
60.<td>Rejoanul Alam</td>
61.<td>rejoan.er AT gmail DOT com</td>
62.<td>123456</td>
63.<td>JU</td>
64.</tr>
65.</tbody>
66.</table>
67.</body>
68.</body>
69.</html>
style.css ফাইল
01.body {
02.font-family: "Lucida Sans Unicode","Lucida Grande",Sans-Serif;
03.color: #3E3E3E;
04.background: #efefef;
05.font-size: 12px;
06.}
07. 
08. 
09.table {
10.border-collapse:collapse;
11.font-size:12px;
12.margin:0 20px 20px 20px;
13.border-top:2px solid #015287;
14.width:480px;
15.}
16. 
17. 
18.th {
19.border-bottom: 2px solid #015287;
20.color: #D15600;
21.font-size: 14px;
22.font-weight: normal;
23.text-align: left;
24.padding: 3px 8px;
25.}
26. 
27. 
28.td {
29.padding: 6px;
30.}
31..odd{
32.background:ivory;
33.}
34..even{
35.background:#ccc;
36.}
script.js ফাইল
01.$(document).ready(function(){
02.$('table tr').each(function(i){
03.if(i % 2 == 0){
04.$(this).addClass('even');
05.}else{
06.$(this).addClass('odd');
07.}
08.});
09.});
আউটপুট:
ID Name Mail Phone Address
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU

ব্যাখ্যা: এইচটিএমএল এবং সিএসএস এর তো ব্যাখ্যার প্রয়োজন নেই,সহজ।জেকোয়েরিতে সব আগে ডকুমেন্ট রেডি করে এর ভিতর সব tr সিলেক্ট করে each মেথড দিয়ে iterate করলাম।এরপর বর্তমান tr এর index কে ২ দিয়ে মডুলাস করে দেখলাম ভাগফল ০ কিনা।যদি ০ হয় তাহলে জোড় ইনডেক্স পাচ্ছি এবং সাথে সাথে সেই tr এ even নামে একটা ক্লাস জুরে দিচ্ছি।আর তা নাহলে odd ক্লাস যোগ হবে অর্থ্যাৎ যদি বিজোড় হয়।i প্যারামিটারে ইনডেক্স মানগুলি আছে।

**আপনি ইচ্ছে করলে যেকোন ইনডেক্সে গিয়ে iterating (পুনরাবৃত্তি) থামিয়ে দিতে পারেন।যেমন
01.$(document).ready(function(){
02.$('table tr').each(function(i){
03.if(i < 5){
04.if(i % 2 == 0){
05.$(this).addClass('even');
06.}else{
07.$(this).addClass('odd');
08.}
09.}
10.});
11.});
আউটপুট:

ID Name Mail Phone Address
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
1 Rejoanul Alam rejoan.er AT gmail DOT com 123456 JU
অর্থ্যাৎ যতক্ষন tr এর ইনডেক্স ৫  এর ছোট পাবে ততক্ষন odd,even ক্লাস যোগ হতে থাকবে।$('table tr') দ্বারা যতগুলি tr সিলেক্ট হয়েছে তার মধ্যে প্রথমটির ইনডেক্স ০ থেকে শুরু হয় এরপরেরটি ১, তারপরেরটি ২ ... এভাবে

জেকোয়েরি কনফ্লিক্ট দুর করা (jQuery conflict removal)



অনেক সময় সব কোড ঠিক মত লিখবেন কিন্তু তারপরেও দেখবেন কাজ হচ্ছেনা।সাধারনত কোন প্রজেক্টে একসাথে জাভাস্ক্রিপ্টের অনেক লাইব্রেরি ব্যবহার করলে এমন হতে পারে।এ সমস্যার একটা সহজ সমাধান আছে জেকোয়েরিতে।মোটুলস,প্রোটোটাইপ বা যতগুলি ফ্রেমওয়ার্ক অথবা জাভাস্ক্রিপ্টের অন্য যতই লাইব্রেরি ব্যবহার করেননা কেন,জেকোয়েরির কোড তার নিজের মত কাজ করবে।কারও দ্বারা প্রভাবিত হবেনা।এরুপ ক্ষেত্রে জেকোয়েরির কোড লেখার সময় নিচের মত করে লিখতে হবে।
01.var abc = jQuery.noConflict();
02.abc(document).ready(function(){
03.abc('table tr').each(function(i){
04.if(i < 5){
05.if(i % 2 == 0){
06.abc(this).addClass('even');
07.}else{
08.abc(this).addClass('odd');
09.}
10.}
11.});
12.});
*abc ভেরিয়েবলের নাম ইচ্ছেমত দিতে পারেন।পরবর্তীতে জেকোয়েরির সব কোডে যেখানে যেখানে $ চিহ্ন আছে তা এই নাম দিয়ে প্রতিস্থাপন করতে হবে।

*জাভাস্ক্রিপ্টের অনেক লাইব্রেরী $ এই চিহ্ন তাদের ভেরিয়েবল বা ফাংশন নামের জন্য ব্যবহার করে তাই একসাথে একাধিক ফ্রেমওয়ার্ক ব্যবহার করলে এই ধরনের সমস্যা হতে পারে।

*j ছোটহাতের এরপর Q বড়হাতের,এভাবেই লিখতে হবে নাহলে কাজ হবেনা।