one মেথড
one মেথডটি এলিমেন্টে ইভেন্ট হ্যান্ডলার
যোগ করতে দেয়। ইভেন্টটি একবার কাজ করার পর
হ্যান্ডলারটি স্বয়ংক্রিয়ভাবে সরিয়ে দেওয়া হবে।
সিনট্যাক্স
এভাবে আমরা এলিমেন্টে ইভেন্ট হ্যান্ডলার সংযুক্ত করি,
প্রথম প্যারামিটার হিসেবে স্ট্রিং আকারে একটি বা একাধিক ইভেন্ট
স্পেস দ্বারা আলাদা করে পাঠানো হয়, দ্বিতীয়টি - আমরা JavaScript অবজেক্ট আকারে ডেটা পাঠাই,
যা ইভেন্ট ফায়ার হলে event.data প্রপার্টিতে
হ্যান্ডলারে পাঠানো হয়। দ্বিতীয় প্যারামিটারটি
ঐচ্ছিক। তৃতীয়টি আমরা ফাংশন-হ্যান্ডলার পাঠাই,
যাতে ইভেন্ট অবজেক্ট পাঠানো হয় অথবা আমরা false পাঠাই:
$(সিলেক্টর).one(ইভেন্টগুলি, [ডেটা], ফাংশন-হ্যান্ডলার(ইভেন্ট অবজেক্ট));
দ্বিতীয় প্যারামিটার হিসেবে এলিমেন্টের ভিতরের
বংশধরদের অতিরিক্ত ফিল্টারিং সিলেক্টর পাঠানো যেতে পারে,
তৃতীয়টি - অতিরিক্ত ডেটা, যা ইভেন্ট ফায়ার হলে
event.data প্রপার্টিতে হ্যান্ডলারে
পাঠানো হয়। দ্বিতীয় এবং তৃতীয় প্যারামিটার
ঐচ্ছিক। চতুর্থ হিসেবে আমরা
ফাংশন-হ্যান্ডলার পাঠাই, যাতে ইভেন্ট অবজেক্ট
এবং ঐচ্ছিক অতিরিক্ত প্যারামিটার পাঠানো হয়। যদি
ফাংশন-হ্যান্ডলারের পরিবর্তে false পাঠানো হয়, তবে ফাংশনটি শুধু
false রিটার্ন করবে:
$(সিলেক্টর).one(ইভেন্টগুলি, [সিলেক্টর], [ডেটা], ফাংশন-হ্যান্ডলার(ইভেন্ট অবজেক্ট));
one মেথডটি অন্য ভাবেও ব্যবহার করা যেতে পারে,
তখন প্রথম প্যারামিটার হিসেবে পাঠানো হয়
JavaScript অবজেক্ট, যার কীগুলি - ইভেন্টের ধরন, এবং
মানগুলি - ফাংশন-হ্যান্ডলার, যা আমরা এলিমেন্টে যোগ করেছি:
$(সিলেক্টর).one({'ইভেন্টের ধরন': handler}, [সিলেক্টর], [ডেটা]);
যদি আমরা অতিরিক্ত সিলেক্টর না পাঠাই, তবে ইভেন্টটি সেই এলিমেন্টে ফায়ার হয়, যেখানে আমরা হ্যান্ডলার সংযুক্ত করি, অন্যথায় - সেই বংশধর এলিমেন্টে, যা এই সিলেক্টরের সাথে মেলে (ডেলিগেটেড ইভেন্ট)।
উদাহরণ
আসুন প্যারাগ্রাফে ক্লিক করলে সেই ডেটা আউটপুট করি, যা
আমরা one মেথডে পাঠিয়েছি। পরবর্তী ক্লিকগুলিতে
কিছুই ঘটবে না। আমরা
testFunc ফাংশন-হ্যান্ডলারটি ব্যবহার করব,
যা আমরা তৈরি করেছি:
<p>click</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);