ই.টারেট এবং ই-কর্নার টার্গেটের মধ্যে পার্থক্য


276

আমি পার্থক্যটি বুঝতে পারি না, তারা উভয়ই একই বলে মনে হয় তবে আমি অনুমান করি যে তারা তা নয়।

একটি বা অন্য কখন ব্যবহার করবেন তার কোনও উদাহরণ প্রশংসিত হবে।


2
এই বেহালার শো সুস্পষ্টভাবে পার্থক্য
Murhaf Sousli

1
অ্যাকশনস্ক্রিপ্ট 3 কে কি কেউ যথেষ্টভাবে জানেন যে এটির ঘটনাগুলি DOM ইভেন্টের মতোই আচরণ করে?
বেন ক্র্যাসি

2
জাভাস্ক্রিপ্ট সমতুল্য: স্ট্যাকওভারফ্লো
বেন ক্র্যাসি

মুরহাফ সৌসিলির প্রদত্ত একটি উল্লেখ একটি পার্থক্য কী তা একটি প্রশ্নের উত্তর দেওয়ার একটি পরিষ্কার ব্যাখ্যা। এই ফিডেলের সামান্য সরলীকৃত সংস্করণটি সেরা উত্তর হবে।
আজাকগাইম

উত্তর:


204

বেন তার উত্তরে পুরোপুরি সঠিক - তাই তিনি যা বলেন তা মনে রাখবেন। আমি কি বলতে সম্পর্কে আছি একটি পূর্ণ ব্যাখ্যা নয়, কিন্তু এটি একটি খুব সহজ উপায় কিভাবে মনে রাখা সম্ভব 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উভয়ই সর্বদা "বিটিএনএস" হয়ে থাকবেন।


2
সুতরাং, অন্য কথায়, লক্ষ্য হ'ল চাইল্ডস এবং কারেন্ট টার্গেটটি পাত্রে।
আর্টেমিক্স

107
না, currentTargetইভেন্টের জন্য সর্বদা অবজেক্টটি শুনছেন; targetআসল লক্ষ্য যা ইভেন্টটি পেয়েছে। ইভেন্ট বুদবুদ প্রতি লক্ষ্য লক্ষ্য ইভেন্টটি গ্রহণ করে এবং এটি প্রদর্শন তালিকার উপরে বুদবুদ করে। (বা ঘটনা ক্যাপচারিং জন্য অন্যান্য উপায় বৃত্তাকার)
অকর্মা

4
যদি ঘটনাটি প্রেরণকারী কোনও শিশু হয় তবে হ্যাঁ টার্গেটগুলি বাচ্চারা। সাধারণত আপনি ই-কর্নার টার্গেটটি ব্যবহার করতে চাইবেন কারণ আপনি শ্রোতাদের এই দায়িত্বটি দিয়েছেন। তবে পরিস্থিতিতে যেমন উপরে তালিকাভুক্ত এক জেভান যেখানে আপনি একাধিক বাচ্চাদের সাথে একটি ধারকটিতে একজন শ্রোতা চান, তারপরে আপনি কোন শিশুটি ইভেন্টটি প্রেরণ করেছেন তা দেখতে আপনি e.target ব্যবহার করবেন।
বেন গেইল

উপরের @ পোকের কাছ থেকে দেওয়া মন্তব্যটি সেরা উত্তর "কারেন্ট টার্গেট সর্বদা অবজেক্ট শ্রোতা, টার্গেটটি আসল লক্ষ্য যা ইভেন্টটি পেয়েছিল"
পান্ডাউড

434

e.targetইভেন্ট প্রেরণকারীকে ট্রিগার করার জন্য e.currentTargetএটিই ট্রিগার করে এবং আপনি আপনার শ্রোতাকে এটিই অর্পণ করেছিলেন।


7
এখানে একটি ভাল উদাহরণ রয়েছে: joequery.me/code/event-target-vs-event-currenttarget-30-seconds
গ্লেন ওয়ার্ক

28

e.currentTargetইভেন্টটি হ'ল সর্বদা উপাদানটি আসলে আবদ্ধ। আপনার মার্কআপটি কীভাবে কাঠামোবদ্ধ করা হয়েছে তার উপর নির্ভর করে e.targetইভেন্টটি যে উপাদানটির উদ্ভূত উপাদান, তাই e.targetকোনও শিশু হতে পারে e.currentTargetবা e.target=== হতে পারে e.currentTarget


26

আমি ভিজ্যুয়াল উত্তর পছন্দ করি।

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন ক্লিক করেন #btn, দুটি ইভেন্ট হ্যান্ডলার কল হয়ে যায় এবং আপনি ছবিতে যা দেখেন সেগুলি আউটপুট দেয়।

ডেমো এখানে: https://jsfiddle.net/ujhe1key/


প্রশ্নটি জেএস নয়, এএস 3 নিয়ে।
আর্টেমিক্স

1
আহ ঠিক আছে, ট্যাগিং সম্পর্কে দুঃখিত। উত্তর এখনও উভয় ক্ষেত্রে প্রযোজ্য।
মারিয়া ইনেস পার্নিসারি

8

এটি লক্ষণীয় যে ইভেন্ট.টারাগেট দরকারী হতে পারে, উদাহরণস্বরূপ, একক শ্রোতা বিভিন্ন ক্রিয়াকলাপকে ট্রিগার করতে ব্যবহার করার জন্য। আসুন ধরা যাক আপনার ভিতরে 10 টি বোতামের সাথে আদর্শ "মেনু" স্প্রিট রয়েছে তাই করার পরিবর্তে:

menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...

আপনি সহজভাবে করতে পারেন:

menu.addEventListener(MouseEvent.CLICK, doAction);

এবং ইভেন্ট.আরগারেটের উপর নির্ভর করে (এটির নামের সম্পত্তি ইত্যাদি ব্যবহার করে ...) উপর নির্ভর করে doAction (ইভেন্ট) এর মধ্যে একটি পৃথক ক্রিয়া ট্রিগার করুন)


5

একটি উদাহরণ তৈরি করুন:

var body = document.body,
    btn = document.getElementById( 'id' );
body.addEventListener( 'click', function( event ) {
    console.log( event.currentTarget === body );
    console.log( event.target === btn );
}, false );

আপনি যখন 'বিটিএন' ক্লিক করবেন, এবং 'সত্য' এবং 'সত্য' উপস্থিত হবে!


3

ই-কর্নার টার্গেট ইভেন্ট শ্রোতা যুক্ত করা হয় এমন উপাদানটি সর্বদা ফিরে আসত।

অন্যদিকে, e.target নিজেই উপাদান বা যে কোনও প্রত্যক্ষ শিশু বা গ্র্যান্ড শিশু বা গ্র্যান্ড-গ্র্যান্ড-বাচ্চা ইত্যাদি হতে পারে ইভেন্টটি কে পেয়েছে। অন্য কথায়, e.target ডিসপ্লে তালিকার শ্রেণিবদ্ধের শীর্ষে থাকা উপাদানটি প্রদান করে এবং এটি অবশ্যই চাইল্ড শ্রেণিবদ্ধ বা নিজেই উপাদানটিতে থাকতে হবে।

আপনার যখন ক্যানভাসে বেশ কয়েকটি চিত্র থাকে এবং আপনি কন্টেন্টের ভিতরে থাকা চিত্রগুলি টানতে চান তবে একটি ব্যবহার হতে পারে Can আপনি ক্যানভাসে শ্রোতা যুক্ত করতে পারেন এবং সেই শ্রোতার মধ্যে আপনি ক্যানভাসটি টেনে না নেওয়ার জন্য নিচের কোডটি লিখতে পারেন।

function dragImageOnly(e:MouseEvent):void
{
    if(e.target==e.currentTarget)
    {
        return;
     }
     else
     {
        Image(e.target).startDrag();
     }
}


2
  • e.target হল উপাদান, যা আপনি ক্লিক করেন
  • ই-কর্নার টার্গেটটি যুক্ত ইভেন্ট শ্রোতার সাথে উপাদান।

আপনি যদি বাটনের চাইল্ড এলিমেন্টে ক্লিক করেন, বাটন বৈশিষ্ট্যগুলি সনাক্ত করতে কারেন্টট্রেট ব্যবহার করা ভাল, সিএইচ এর মাঝে মাঝে e.target ব্যবহার করতে সমস্যা হয়।


0

e.currentTarget হ'ল উপাদান (পিতামাতার) যেখানে ইভেন্টটি নিবন্ধিত হয়, e.target নোড (শিশুরা) যেখানে ইভেন্টটি নির্দেশ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.