You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 2-ui/2-events/03-event-delegation/article.md
+33-33
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
4
4
Menangkap dan pengelembungan mengizinkan kita untuk mengimplementasikan salah satu pola penanganan peristiwa paling kuat yang disebut dengan *delegasi peristiwa (_event delegation_)*.
5
5
6
-
Ide utama yaitu jika kita memiliki banyak elemen yang akan di tanggani dengan cara yang sama, maka sebaiknya daripada memberikan sebuah penangan pada setiap elemen tersebut -- kita buat sebuah penangan (_handler_) pada elemen atas yang melingkupi semua elemen tersebut.
6
+
Ide utama yaitu jika kita memiliki banyak elemen yang akan di tangani dengan cara yang sama, maka sebaiknya daripada memberikan sebuah penangan pada setiap elemen tersebut -- kita buat sebuah penangan (_handler_) pada elemen atas yang melingkupi semua elemen tersebut.
7
7
8
8
Pada penangan kita mendapatkan `event.target` untuk melihat dimanakah kejadian itu terjadi, dan akan menangani kejadian itu.
9
9
@@ -180,46 +180,46 @@ Pola memiliki 2 bagian:
180
180
1. Kita tambahkan sebuah atribut khusus ke sebuah elemen yang menjelaskan perilakunya.
181
181
2. Penangan dokumen secara umum untuk melacak peristiwa, dan jika sebuah peristiwa terjadi pada elemen yang memiliki atribut khusus -- jalankan sebuah proses.
182
182
183
-
### Behavior: Counter
183
+
### Perilaku: Menghitung
184
184
185
-
For instance, here the attribute `data-counter`adds a behavior: "increase value on click" to buttons:
185
+
Contohnya, disini atribut `data-counter`menambahkan sebuah perilaku: "Menambah nilai pada klik" ke tombol:
if (event.target.dataset.counter!=undefined) { //if the attribute exists...
194
+
if (event.target.dataset.counter!=undefined) { //Jika ada atributnya...
195
195
event.target.value++;
196
196
}
197
197
198
198
});
199
199
</script>
200
200
```
201
201
202
-
If we click a button -- its value is increased. Not buttons, but the general approach is important here.
202
+
Jika kita mengklik sebuah tombol -- nilainya akan bertambah. Bukan tombol, tapi pendekatan secara umum penting pada kasus ini.
203
203
204
-
There can be as many attributes with `data-counter`as we want. We can add new ones to HTML at any moment. Using the event delegation we "extended" HTML, added an attribute that describes a new behavior.
204
+
Bisa ada banyak atribut dengan `data-counter`sebanyak yang kita mau. Kta bisa menambah atribut baru ke HTML kapanpun kita mau. Menggunakan delegasi peristiwa kita "memperpanjang" HTML, menambahkan sebuah atribut baru untuk menjelaskan sebuah perilaku baru.
When we assign an event handler to the `document` object, we should always use `addEventListener`, not `document.on<event>`, because the latter will cause conflicts: new handlers overwrite old ones.
206
+
```warn header="Untuk penangan tingkat dokumen -- selalu gunakan`addEventListener`"
207
+
Pada saat kita mengatur sebuah penangan peristiwa (_event handler_) ke objek `dokumen`, sebaiknya selalu gunakan `addEvenListener`, dan bukan `document.on<event>`, karena yang kedua akan mengakibatkan konflik: penangan baru akan menimpah penangan yang lama.
208
208
209
-
For real projects it's normal that there are many handlers on `document`set by different parts of the code.
209
+
Untuk projek asli, adalah normal untuk memiliki banyak penangan (_handler_) yang di atur ke `document`pada bagian code yang berbeda.
210
210
```
211
211
212
-
### Behavior: Toggler
212
+
### Perilaku: Pengalih
213
213
214
-
One more example of behavior. A click on an element with the attribute `data-toggle-id` will show/hide the element with the given `id`:
214
+
Satu lagi contoh dari perilaku. Sebuah klik pada elemen dengan atribut `data-toggle-id` akan menampilkan/menyembunyikan elemen dengan `id` yang sama:
215
215
216
216
```html autorun run height=60
217
217
<button *!*data-toggle-id="subscribe-mail"*/!*>
218
-
Show the subscription form
218
+
Tampilkan formulir berlangganan
219
219
</button>
220
220
221
221
<form id="subscribe-mail" hidden>
222
-
Your mail: <input type="email">
222
+
Email kamu: <input type="email">
223
223
</form>
224
224
225
225
<script>
@@ -236,37 +236,37 @@ One more example of behavior. A click on an element with the attribute `data-tog
236
236
</script>
237
237
```
238
238
239
-
Let's note once again what we did. Now, to add toggling functionality to an element -- there's no need to know JavaScript, just use the attribute`data-toggle-id`.
239
+
Catat lagi apa yang kita lakukan. Sekarang, untuk menambahkan fungsi beralih pada elemen -- tidak memerlukan pengetahuan tentang JavaScript, hanya perlu menggunakan atribut`data-toggle-id`.
240
240
241
-
That may become really convenient -- no need to write JavaScript for every such element. Just use the behavior. The document-level handler makes it work for any element of the page.
241
+
Hal ini akan sangat menyederhanakan proses -- tidak perlu menulis JavaScript untuk setiap elemen. Hanya perlu menggunakan perilaku. Penangan (_handler_) tingkat dokumen akan membuat proses ini berfungsi pada setiap elemen yang ada di dalam halaman tersebut.
242
242
243
-
We can combine multiple behaviors on a single element as well.
243
+
Kita juga bisa menggabungkan beberapa perilaku pada sebuah elemen.
244
244
245
-
The "behavior" pattern can be an alternative to mini-fragments of JavaScript.
245
+
"Perilaku" pola bisa menjadi alternatif terhadap fargmen kecil JavaScript.
246
246
247
-
## Summary
247
+
## Ringkisan
248
248
249
-
Event delegation is really cool! It's one of the most helpful patterns for DOM events.
249
+
Delegasi peristiwa sangatlah keren! Itu salah satu pola yang paling berguna untuk peristiwa DOM.
250
250
251
-
It's often used to add the same handling for many similar elements, but not only for that.
251
+
Itu sering digunakan untuk menambahkan penangan untuk elemen yang mirip, tapi bukan hanya untuk itu.
252
252
253
-
The algorithm:
253
+
Algoritmanya:
254
254
255
-
1.Put a single handler on the container.
256
-
2.In the handler -- check the source element`event.target`.
257
-
3.If the event happened inside an element that interests us, then handle the event.
255
+
1.Taruh sebuah penangan (_handler_) pada elemen atas.
256
+
2.Di penangan (_handler_) -- periksa sumber elemen dengan menggunakan`event.target`.
257
+
3.Jika peristiwa terjadi didalam elemen yang kita inginkan, maka tangani peristiwa itu.
258
258
259
-
Benefits:
259
+
Keuntungan:
260
260
261
261
```compare
262
-
+ Simplifies initialization and saves memory: no need to add many handlers.
263
-
+ Less code: when adding or removing elements, no need to add/remove handlers.
264
-
+ DOM modifications: we can mass add/remove elements with `innerHTML` and the like.
262
+
+ Menyederhanakan proses inisialisasi dan menghemat memori: tidak perlu membuat banyak penangan (_handler_).
263
+
+ Sedikit Kode: saat menambahkan dan menghapus elemen, kita tidak perlu tambah/hapus penangan (_handler_).
264
+
+ Modifikasi DOM: Kita bisa secara banyak menambahkan/menghapuskan elemen dengan `innerHTML` dan sejenisnya.
265
265
```
266
266
267
-
The delegation has its limitations of course:
267
+
Delegasi tentu juga memiliki batasannya:
268
268
269
269
```compare
270
-
- First, the event must be bubbling. Some events do not bubble. Also, low-level handlers should not use `event.stopPropagation()`.
271
-
- Second, the delegation may add CPU load, because the container-level handler reacts on events in any place of the container, no matter whether they interest us or not. But usually the load is negligible, so we don't take it into account.
270
+
- Pertama, peristiwa harus bisa mengelembung. Bebebrapa peristiwa tidak mengelembung. Juga, penangan (_handler_) pada level bawah tidak boleh menggunakan `event.stopPropagation()`.
271
+
- Kedua, delegasi mungkin menambahkan muatan pada CPU, karena penangan (_handler_) pada level atas akan bereaksi pada peristiwa yang terjadi didalam elemen itu, tidak peduli jika peristiwa itu yang kita inginkan atau tidak. Tapi biasanya proses muatannya tidak besar dan bisa diabaikan, jadi kita tidak perlu memperhitungkannya.
0 commit comments