Skip to content

Commit 23c6aec

Browse files
committed
event 03: article.md - 100%
1 parent 461c22a commit 23c6aec

File tree

1 file changed

+33
-33
lines changed

1 file changed

+33
-33
lines changed

Diff for: 2-ui/2-events/03-event-delegation/article.md

+33-33
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
Menangkap dan pengelembungan mengizinkan kita untuk mengimplementasikan salah satu pola penanganan peristiwa paling kuat yang disebut dengan *delegasi peristiwa (_event delegation_)*.
55

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.
77

88
Pada penangan kita mendapatkan `event.target` untuk melihat dimanakah kejadian itu terjadi, dan akan menangani kejadian itu.
99

@@ -180,46 +180,46 @@ Pola memiliki 2 bagian:
180180
1. Kita tambahkan sebuah atribut khusus ke sebuah elemen yang menjelaskan perilakunya.
181181
2. Penangan dokumen secara umum untuk melacak peristiwa, dan jika sebuah peristiwa terjadi pada elemen yang memiliki atribut khusus -- jalankan sebuah proses.
182182

183-
### Behavior: Counter
183+
### Perilaku: Menghitung
184184

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:
186186

187187
```html run autorun height=60
188-
Counter: <input type="button" value="1" data-counter>
189-
One more counter: <input type="button" value="2" data-counter>
188+
Penghitung: <input type="button" value="1" data-counter>
189+
Penghitung lainnya: <input type="button" value="2" data-counter>
190190

191191
<script>
192192
document.addEventListener('click', function(event) {
193193
194-
if (event.target.dataset.counter != undefined) { // if the attribute exists...
194+
if (event.target.dataset.counter != undefined) { // Jika ada atributnya...
195195
event.target.value++;
196196
}
197197
198198
});
199199
</script>
200200
```
201201

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.
203203

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.
205205

206-
```warn header="For document-level handlers -- always `addEventListener`"
207-
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.
208208

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.
210210
```
211211
212-
### Behavior: Toggler
212+
### Perilaku: Pengalih
213213
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:
215215
216216
```html autorun run height=60
217217
<button *!*data-toggle-id="subscribe-mail"*/!*>
218-
Show the subscription form
218+
Tampilkan formulir berlangganan
219219
</button>
220220
221221
<form id="subscribe-mail" hidden>
222-
Your mail: <input type="email">
222+
Email kamu: <input type="email">
223223
</form>
224224
225225
<script>
@@ -236,37 +236,37 @@ One more example of behavior. A click on an element with the attribute `data-tog
236236
</script>
237237
```
238238

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`.
240240

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.
242242

243-
We can combine multiple behaviors on a single element as well.
243+
Kita juga bisa menggabungkan beberapa perilaku pada sebuah elemen.
244244

245-
The "behavior" pattern can be an alternative to mini-fragments of JavaScript.
245+
"Perilaku" pola bisa menjadi alternatif terhadap fargmen kecil JavaScript.
246246

247-
## Summary
247+
## Ringkisan
248248

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.
250250

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.
252252

253-
The algorithm:
253+
Algoritmanya:
254254

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.
258258

259-
Benefits:
259+
Keuntungan:
260260

261261
```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.
265265
```
266266

267-
The delegation has its limitations of course:
267+
Delegasi tentu juga memiliki batasannya:
268268

269269
```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.
272272
```

0 commit comments

Comments
 (0)