আমি পার্থক্যটি বুঝতে পারি না, তারা উভয়ই একই বলে মনে হয় তবে আমি অনুমান করি যে তারা তা নয়।
একটি বা অন্য কখন ব্যবহার করবেন তার কোনও উদাহরণ প্রশংসিত হবে।
আমি পার্থক্যটি বুঝতে পারি না, তারা উভয়ই একই বলে মনে হয় তবে আমি অনুমান করি যে তারা তা নয়।
একটি বা অন্য কখন ব্যবহার করবেন তার কোনও উদাহরণ প্রশংসিত হবে।
উত্তর:
বেন তার উত্তরে পুরোপুরি সঠিক - তাই তিনি যা বলেন তা মনে রাখবেন। আমি কি বলতে সম্পর্কে আছি একটি পূর্ণ ব্যাখ্যা নয়, কিন্তু এটি একটি খুব সহজ উপায় কিভাবে মনে রাখা সম্ভব e.target, e.currentTargetমাউস ঘটনা এবং প্রদর্শন তালিকা থেকে সম্পর্ক কাজ:
e.target= মাউসের নীচে থাকা জিনিস (যেমন বেন বলে ... ঘটনাটি ঘটায় এমন জিনিস)।
e.currentTarget= বিন্দুর আগে জিনিস ... (নীচে দেখুন)
সুতরাং যদি আপনার কাছে "বিটিএনএস" এর একটি উদাহরণ সহ একটি ক্লিপের ভিতরে 10 টি বোতাম থাকে এবং আপনি তা করেন:
btns.addEventListener(MouseEvent.MOUSE_OVER, onOver);
// btns = the thing before the dot of an addEventListener call
function onOver(e:MouseEvent):void{
trace(e.target.name, e.currentTarget.name);
}
e.target10 টি বোতামগুলির মধ্যে একটি e.currentTargetহবে এবং সর্বদা "বিটিএনএস" ক্লিপ হবে।
এটি লক্ষণীয় যে আপনি যদি মাউসএভেন্টকে একটি ROLL_OVER হিসাবে পরিবর্তন করেন বা সম্পত্তিটিকে btns.mouseChildrenমিথ্যাতে সেট করেন e.targetএবং e.currentTargetউভয়ই সর্বদা "বিটিএনএস" হয়ে থাকবেন।
currentTargetইভেন্টের জন্য সর্বদা অবজেক্টটি শুনছেন; targetআসল লক্ষ্য যা ইভেন্টটি পেয়েছে। ইভেন্ট বুদবুদ প্রতি লক্ষ্য লক্ষ্য ইভেন্টটি গ্রহণ করে এবং এটি প্রদর্শন তালিকার উপরে বুদবুদ করে। (বা ঘটনা ক্যাপচারিং জন্য অন্যান্য উপায় বৃত্তাকার)
e.targetইভেন্ট প্রেরণকারীকে ট্রিগার করার জন্য e.currentTargetএটিই ট্রিগার করে এবং আপনি আপনার শ্রোতাকে এটিই অর্পণ করেছিলেন।
e.currentTargetইভেন্টটি হ'ল সর্বদা উপাদানটি আসলে আবদ্ধ। আপনার মার্কআপটি কীভাবে কাঠামোবদ্ধ করা হয়েছে তার উপর নির্ভর করে e.targetইভেন্টটি যে উপাদানটির উদ্ভূত উপাদান, তাই e.targetকোনও শিশু হতে পারে e.currentTargetবা e.target=== হতে পারে e.currentTarget।
আমি ভিজ্যুয়াল উত্তর পছন্দ করি।
আপনি যখন ক্লিক করেন #btn, দুটি ইভেন্ট হ্যান্ডলার কল হয়ে যায় এবং আপনি ছবিতে যা দেখেন সেগুলি আউটপুট দেয়।
ডেমো এখানে: https://jsfiddle.net/ujhe1key/
এটি লক্ষণীয় যে ইভেন্ট.টারাগেট দরকারী হতে পারে, উদাহরণস্বরূপ, একক শ্রোতা বিভিন্ন ক্রিয়াকলাপকে ট্রিগার করতে ব্যবহার করার জন্য। আসুন ধরা যাক আপনার ভিতরে 10 টি বোতামের সাথে আদর্শ "মেনু" স্প্রিট রয়েছে তাই করার পরিবর্তে:
menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...
আপনি সহজভাবে করতে পারেন:
menu.addEventListener(MouseEvent.CLICK, doAction);
এবং ইভেন্ট.আরগারেটের উপর নির্ভর করে (এটির নামের সম্পত্তি ইত্যাদি ব্যবহার করে ...) উপর নির্ভর করে doAction (ইভেন্ট) এর মধ্যে একটি পৃথক ক্রিয়া ট্রিগার করুন)
একটি উদাহরণ তৈরি করুন:
var body = document.body,
btn = document.getElementById( 'id' );
body.addEventListener( 'click', function( event ) {
console.log( event.currentTarget === body );
console.log( event.target === btn );
}, false );
আপনি যখন 'বিটিএন' ক্লিক করবেন, এবং 'সত্য' এবং 'সত্য' উপস্থিত হবে!
ই-কর্নার টার্গেট ইভেন্ট শ্রোতা যুক্ত করা হয় এমন উপাদানটি সর্বদা ফিরে আসত।
অন্যদিকে, e.target নিজেই উপাদান বা যে কোনও প্রত্যক্ষ শিশু বা গ্র্যান্ড শিশু বা গ্র্যান্ড-গ্র্যান্ড-বাচ্চা ইত্যাদি হতে পারে ইভেন্টটি কে পেয়েছে। অন্য কথায়, e.target ডিসপ্লে তালিকার শ্রেণিবদ্ধের শীর্ষে থাকা উপাদানটি প্রদান করে এবং এটি অবশ্যই চাইল্ড শ্রেণিবদ্ধ বা নিজেই উপাদানটিতে থাকতে হবে।
আপনার যখন ক্যানভাসে বেশ কয়েকটি চিত্র থাকে এবং আপনি কন্টেন্টের ভিতরে থাকা চিত্রগুলি টানতে চান তবে একটি ব্যবহার হতে পারে Can আপনি ক্যানভাসে শ্রোতা যুক্ত করতে পারেন এবং সেই শ্রোতার মধ্যে আপনি ক্যানভাসটি টেনে না নেওয়ার জন্য নিচের কোডটি লিখতে পারেন।
function dragImageOnly(e:MouseEvent):void
{
if(e.target==e.currentTarget)
{
return;
}
else
{
Image(e.target).startDrag();
}
}
target is the element that triggered the event (e.g., the user clicked on)
currenttarget is the element that the event listener is attached to.
আপনি যদি বাটনের চাইল্ড এলিমেন্টে ক্লিক করেন, বাটন বৈশিষ্ট্যগুলি সনাক্ত করতে কারেন্টট্রেট ব্যবহার করা ভাল, সিএইচ এর মাঝে মাঝে e.target ব্যবহার করতে সমস্যা হয়।
e.currentTarget হ'ল উপাদান (পিতামাতার) যেখানে ইভেন্টটি নিবন্ধিত হয়, e.target নোড (শিশুরা) যেখানে ইভেন্টটি নির্দেশ করে।