JQuery কোড সহ:
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
myfunctionJQuery ব্যবহার করার সময় আমি কীভাবে যুক্তিগুলি পাস করব ?
JQuery কোড সহ:
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
myfunctionJQuery ব্যবহার করার সময় আমি কীভাবে যুক্তিগুলি পাস করব ?
উত্তর:
সবচেয়ে সহজ উপায় হ'ল এটি এমনভাবে করা (ধরে নিই যে আপনি কোনও অনুষ্ঠানের তথ্য প্রেরণ করতে চান না) ...
$("#myid").click(function() {
myfunction(arg1, arg2);
});
jsFizz ।
এটি একটি বেনামে ফাংশন তৈরি করে, যা clickইভেন্টটি ট্রিগার করা হলে ডাকা হয়। এটি আপনার myfunction()প্রদত্ত যুক্তিগুলির সাথে পালা কল করবে ।
যদি আপনি ThisBinding( thisফাংশনটি চালিত হওয়ার সময় এর মানটি, ইভেন্টটি সূচিত করে এমন উপাদানটিতে সেট করে) রাখতে চান তবে তার সাথে ফাংশনটি কল করুন call()।
$("#myid").click(function() {
myfunction.call(this, arg1, arg2);
});
jsFizz ।
আপনার উদাহরণটি যেভাবে বলছে আপনি সরাসরি রেফারেন্সটি পাস করতে পারবেন না বা এর একক যুক্তি jQuery eventঅবজেক্ট হবে ।
আপনি যদি রেফারেন্সটি পাস করতে চান তবে আপনাকে অবশ্যই jQuery এর proxy()ফাংশনটি (যা ক্রস ব্রাউজারের মোড়ক হিসাবে ব্যবহার করতে হবে Function.prototype.bind()) উপার্জন করতে হবে । এই আপনি আর্গুমেন্ট, যা আবদ্ধ হয় পাস করতে দেয় সামনেevent যুক্তি।
$("#myid").click($.proxy(myfunction, null, arg1, arg2));
jsFizz ।
এই উদাহরণে, myfunction()সঙ্গে কার্যকর করা হবে তার ThisBindingঅক্ষত ( nullনয় একটি বস্তু, তাই স্বাভাবিক thisউপাদান যা আলোড়ন সৃষ্টি ঘটনা ব্যবহৃত হয় মান), আর্গুমেন্টগুলি (অনুক্রমে) সহ arg1, arg2এবং পরিশেষে jQuery এর eventঅবজেক্ট, যা আপনি উপেক্ষা করতে পারেন যদি এটির প্রয়োজন না হয় (এমনকি ফাংশনের যুক্তিতে এটির নামও রাখবেন না)।
আপনি ডেটা পাস করার জন্য jQuery eventঅবজেক্ট ব্যবহার করতে পারেন data, তবে myfunction()এটির মাধ্যমে এটি অ্যাক্সেস করার জন্য সংশোধন করতে হবে event.data.arg1(যা আপনার প্রশ্নের উল্লেখের মতো ফাংশন আর্গুমেন্ট নয় ) বা কমপক্ষে পূর্ববর্তী উদাহরণ বা উত্পন্ন একটির মতো ম্যানুয়াল প্রক্সি ফাংশন প্রবর্তন করা প্রয়োজন পরবর্তী উদাহরণ ব্যবহার করে।
myfunction(this, arg1, arg2)বেনামি হ্যান্ডলার থেকে কল করুন । তারপরে আপনার ফাংশনটি করতে পারেmyfunction(el, arg1, arg2) { alert($(el).val()); }
myfunction.call(this, arg1, arg2)।
$("#myid").on('click', {arg1: 'hello', arg2: 'bye'}, myfunction);
function myfunction(e) {
var arg1 = e.data.arg1;
var arg2 = e.data.arg2;
alert(arg1);
alert(arg2);
}
//call method directly:
myfunction({
arg1: 'hello agian',
arg2: 'bye again'
});
এছাড়াও আপনাকে চালু এবং বন্ধ পদ্ধতিগুলি ব্যবহার করে নির্দিষ্ট ইভেন্ট হ্যান্ডলারগুলিকে বাঁধতে এবং আবদ্ধ করতে দেয়।
উদাহরণ:
$("#myid").off('click', myfunction);
এটি # মাইআইডি থেকে মাই ফাংশন হ্যান্ডলারটিকে আবদ্ধ করবে
আপনার অবশ্যই অ্যালেক্সের উত্তরটি ব্যবহার করা উচিত, প্রোটোটাইপ লাইব্রেরির "বাইন্ড" পদ্ধতিটি ইকামাস্ক্রিপ্ট 5-তে প্রমিত করা হয়েছে, এবং শীঘ্রই স্থানীয়ভাবে ব্রাউজারগুলিতে প্রয়োগ করা হবে। এটি এর মতো কাজ করে:
jQuery("#myid").click(myfunction.bind(this, arg1, arg2));
thisযদি এই পদ্ধতিটি ব্যবহার করেন তবে একটি অন্য প্রসঙ্গে সেট করা হবে, উদাহরণস্বরূপ, bind()এটি thisসেই প্রসঙ্গে (বিশ্বব্যাপী) এ লিখিতকরণের ফলে সেই ক্লিক হ্যান্ডলারটির উপাদানটির কোনও রেফারেন্সের বিরোধিতা হিসাবে windowঅবজেক্ট থাকতে পারে ? this#myid
people reading my answers are smart enough to figure these details out themselves, ইকমাস্ক্রিপ্ট সম্পর্কে নয়।
পুরানো থ্রেড, তবে অনুসন্ধানের উদ্দেশ্যে; চেষ্টা করুন:
$(selector).on('mouseover',...);
... এবং "ডেটা" প্যারামিটারটি পরীক্ষা করে দেখুন: http://api.jquery.com/on/
যেমন:
function greet( event ) {
alert( "Hello " + event.data.name );
}
$( "button" ).on( "click", {name: "Karl"}, greet );
$( "button" ).on( "click", {name: "Addy"}, greet );