উত্তর:
উভয় হ্যান্ডলারই চলবে, jQuery ইভেন্টের মডেল এক উপাদানটিতে একাধিক হ্যান্ডলারকে মঞ্জুরি দেয়, সুতরাং পরবর্তী হ্যান্ডলার কোনও পুরানো হ্যান্ডলারকে ওভাররাইড করে না।
jQuery('.btn').on('click',handlerClick);
আসলে কোনও জায়গায় না বলে বিভিন্ন জায়গায় ডাকা হয় .off
?
bind
পদ্ধতিটি ব্যবহার করতে হবে । বিস্তারিত জানার জন্য এটি দেখুন: learn.jquery.com/jquery-ui/widget-factory/…
মনে করুন যে আপনার দুটি এফ এবং জি রয়েছে এবং তারা নিশ্চিত এবং স্থির ক্রমে মৃত্যুদন্ড কার্যকর করা হয়েছে তা নিশ্চিত করতে চান, তবে কেবল তাদের আবদ্ধ করুন:
$("...").click(function(event){
f(event);
g(event);
});
এইভাবে (jQuery এর দৃষ্টিকোণ থেকে) কেবলমাত্র একটি হ্যান্ডলার রয়েছে, যা নির্দিষ্ট ক্রমে f এবং g কল করে।
jQuery এর .bind () এটিকে আবদ্ধ করার ক্রমে আগুন দেয় :
যখন কোনও ইভেন্ট কোনও উপাদানের কাছে পৌঁছে যায় তখন উপাদানটির জন্য ইভেন্টের ধরণে আবদ্ধ সমস্ত হ্যান্ডলারগুলি বরখাস্ত করা হয়। যদি সেখানে একাধিক হ্যান্ডলার নিবন্ধিত থাকে তবে তারা সর্বদা ক্রম অনুযায়ী কার্যকর হবে যাতে তারা আবদ্ধ ছিল। সমস্ত হ্যান্ডলারের মৃত্যুদন্ড কার্যকর করার পরে, ইভেন্টটি ইভেন্টের সাধারণ প্রচারের পথে চলতে থাকে।
সূত্র: http://api.jquery.com/bind/
যেহেতু jQuery এর অন্যান্য ক্রিয়াকলাপগুলি (উদাঃ .click()
) শর্টকাট .bind('click', handler)
, তাই আমি অনুমান করব যে সেগুলিও আবদ্ধভাবে ক্রমযুক্ত হয়।
ক্রমানুসারে ইভেন্টগুলি চালাতে আপনার চেইন ব্যবহার করতে সক্ষম হওয়া উচিত, যেমন:
$('#target')
.bind('click',function(event) {
alert('Hello!');
})
.bind('click',function(event) {
alert('Hello again!');
})
.bind('click',function(event) {
alert('Hello yet again!');
});
আমার ধারণা, নীচের কোডটিও একই কাজ করছে
$('#target')
.click(function(event) {
alert('Hello!');
})
.click(function(event) {
alert('Hello again!');
})
.click(function(event) {
alert('Hello yet again!');
});
সূত্র: http://www.peachpit.com/articles/article.aspx?p=1371947&seqNum=3
টিএফএম আরও বলে:
যখন কোনও ইভেন্ট কোনও উপাদানের কাছে পৌঁছে যায় তখন উপাদানটির জন্য ইভেন্টের ধরণে আবদ্ধ সমস্ত হ্যান্ডলারগুলি বরখাস্ত করা হয়। যদি সেখানে একাধিক হ্যান্ডলার নিবন্ধিত থাকে তবে তারা সর্বদা ক্রম অনুযায়ী কার্যকর হবে যাতে তারা আবদ্ধ ছিল। সমস্ত হ্যান্ডলারের মৃত্যুদন্ড কার্যকর করার পরে, ইভেন্টটি ইভেন্টের সাধারণ প্রচারের পথে চলতে থাকে।
When an event reaches an element, all handlers bound to that event type for the element are fired. If there are multiple handlers registered, they will always execute in the order in which they were bound. After all handlers have executed, the event continues along the normal event propagation path.
উভয় হ্যান্ডলারের কল করা হয়।
আপনি ইনলাইন ইভেন্ট বাঁধাইয়ের কথা ভাবতে পারেন (উদাঃ "onclick=..."
), যেখানে কোনও বড় ব্যর্থতা কেবলমাত্র একটি হ্যান্ডলার একটি ইভেন্টের জন্য সেট করা যেতে পারে।
jQuery ডিওএম স্তর 2 ইভেন্ট নিবন্ধকরণ মডেল অনুসারে :
ডিওএম ইভেন্ট মডেল একক ইভেন্ট ইভেন্টে একাধিক ইভেন্ট শ্রোতাদের নিবন্ধকরণের অনুমতি দেয়। এটি অর্জন করতে, ইভেন্ট শ্রোতাদের আর অ্যাট্রিবিউট মান হিসাবে সংরক্ষণ করা হয় না
এটি 2 টি পদ্ধতি ব্যবহার করে সফলভাবে কাজ করেছে: স্টেফান 202 এর এনক্যাপসুলেশন এবং একাধিক ইভেন্ট শ্রোতা। আমার কাছে 3 টি অনুসন্ধান ট্যাব রয়েছে, আসুন তাদের অ্যারে ইনপুট পাঠ্য আইডি এর সংজ্ঞা দিন:
var ids = new Array("searchtab1", "searchtab2", "searchtab3");
সার্চট্যাব 1-এর সামগ্রী পরিবর্তিত হলে আমি সন্ধান ট্যাব 2 এবং সন্ধান ট্যাব 3 আপডেট করতে চাই। এটি কীভাবে এনক্যাপসুলেশনের জন্য হয়েছিল:
for (var i in ids) {
$("#" + ids[i]).change(function() {
for (var j in ids) {
if (this != ids[j]) {
$("#" + ids[j]).val($(this).val());
}
}
});
}
একাধিক ইভেন্ট শ্রোতা:
for (var i in ids) {
for (var j in ids) {
if (ids[i] != ids[j]) {
$("#" + ids[i]).change(function() {
$("#" + ids[j]).val($(this).val());
});
}
}
}
আমি উভয় পদ্ধতি পছন্দ করি তবে প্রোগ্রামার এনক্যাপসুলেশন বেছে নিয়েছিল, তবে একাধিক ইভেন্ট শ্রোতাও এতে কাজ করেছেন। আমরা এটি পরীক্ষা করার জন্য ক্রোম ব্যবহার করেছি।
একের পর এক হ্যান্ডলার ঘটবে তার গ্যারান্টি দেওয়ার জন্য একটি কৌশল রয়েছে: দ্বিতীয় হ্যান্ডলারটি একটি উপাদানযুক্ত উপাদানটির সাথে সংযুক্ত করুন এবং ইভেন্টটি বুদবুদ হতে দিন। ধারকটির সাথে সংযুক্ত হ্যান্ডলারে, আপনি ইভেন্ট.আরটিজেট দেখতে পারেন এবং এটিতে আগ্রহী এমন কিছু হলে আপনি কিছু করতে পারেন।
অশোধিত, সম্ভবত, তবে এটি অবশ্যই কাজ করা উচিত।
jquery উভয় হ্যান্ডলারকে কার্যকর করবে কারণ এটি একাধিক ইভেন্ট হ্যান্ডলারকে অনুমতি দেয়। আমি নমুনা কোড তৈরি করেছি। আপনি চেষ্টা করতে পারেন