Monday, December 31, 2012

Perbedaan target Event dan currentTarget Event

Properti target Event mengacu kepada elemen di mana event itu awal mula terjadi.

Sebagai contoh ketika event handler ONCLICK ditugaskan di dalam DIV, kemudian ada pengguna mengklik DIV itu, lalu terjadilah event click, maka DIV itu dipertimbangkan sebagai asal muasal event pertama-pertama mulai -- target dari si-event.

Sedangkan untuk properti currentTarget mengacu kepada elemen yang event listener-nya sedang diproses.

Sebagai contoh ada kode berikut:

<BODY><P><A HREF="#">anchor <SPAN>span</SPAN></A></P></BODY>

Untuk perbedaan antara currentTarget dan target adalah:

  • target mengacu kepada elemen dimana event itu pertama-tama mulai.

    Sebagai contoh jika anda menempatkan event listener di <BODY>, dan kemudian anda mengklik <SPAN>, target akan mengacu kepada <SPAN>:

    <HTML> <HEAD> <SCRIPT TYPE="text/javascript"> function HandleEvent(){ alert("target: " + event.target.tagName); } </SCRIPT> </HEAD> <BODY ONCLICK="HandleEvent()"> <P> <A HREF="#">anchor <SPAN>span</SPAN></A> </P> </BODY> </HTML>

    Selanjutnya masih sama menggunakan contoh kode di atas, sekarang coba anda klik <A> yang mempunyai innerHTML 'anchor', target akan mengacu kepada <A>.

    Jadi jelas untuk target akan mengacu kepada elemen dimana event mula-mula terjadi.

  • currentTarget adalah kebalikannya.

    Sebagai contoh jika anda melampirkan event listener di <BODY>, lalu anda mengklik <SPAN>, untuk currentTarget mengacu pada <BODY>, sedangkan target masih mengacu pada <SPAN>:

    <HTML> <HEAD> <SCRIPT TYPE="text/javascript"> function HandleEvent() { alert("currentTarget: " + event.currentTarget.tagName); alert("target: " + event.target.tagName); } </SCRIPT> </HEAD> <BODY ONCLICK="HandleEvent()"> <P> <A HREF="#">anchor <SPAN>span</SPAN></A> </P> </BODY> </HTML>

    Selanjutnya masih sama menggunakan contoh kode di atas, sekarang coba klik <A> yang mempunyai innerHTML 'anchor', currentTarget mengacu tetap kepada <BODY>, sedangkan target mengacu pada <A> dan bukan <SPAN>.

Untuk lebih jelasnya jalankan contoh berikut, di mana SPAN, A, P, dan BODY ditambahakan event listener yang sama:

<HTML> <HEAD> <SCRIPT TYPE="text/javascript"> function HandleEvent() { alert("target: " + event.target.tagName); alert("currentTarget: " + event.currentTarget.tagName); } </SCRIPT> </HEAD> <BODY ONCLICK="HandleEvent()"> <P ONCLICK="HandleEvent()"> <A HREF="#" ONCLICK="HandleEvent()">anchor <SPAN ONCLICK="HandleEvent()">span</SPAN></A> </P> </BODY> </HTML>