Sobes.tech
Junior

event.preventDefault va event.stopPropagation o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

event.preventDefault() brauzerning voqeaga nisbatan odatdagi harakatini bekor qiladi (masalan, <a>ga bosilganda navigatsiya qilish), va event.stopPropagation() DOM daraxtida voqea tarqalishini yoki balonlashini to'xtatadi, shuning uchun ayni voqeani ishlovchi handlerlar ota yoki bolalar elementlarda chaqirilmaydi.

Misol:

// Faraz qilaylik, `<a>` ichida link bor
const link = document.querySelector('a');
const div = document.querySelector('div');

// Linkga bosish uchun handler
link.addEventListener('click', (event) => {
  alert('Linkga bosildi');
  event.preventDefault(); // Linkning navigatsiyasini bekor qiladi
});

// Divga bosish uchun handler
div.addEventListener('click', (event) => {
  alert('Divga bosildi');
  // `event.stopPropagation()` bo'lmasa, bu handler linkga bosilgandan so'ng chaqiriladi
});

Agar linkdagi handlerga event.stopPropagation() qo'shilsa:

// Linkdagi bosish va tarqalishni to'xtatish
link.addEventListener('click', (event) => {
  alert('Linkga bosildi');
  event.preventDefault();
  event.stopPropagation(); // Voqeani divga tarqalishini to'xtatadi
});

// Divga bosish uchun handler
div.addEventListener('click', (event) => {
  alert('Div'); // Bu alert, linkga bosilganda ko'rsatilmaydi
});

Xulosa jadvali:

Usul Harakat Standart xatti-harakatga ta'siri Voqeani tarqalishiga ta'siri
event.preventDefault() Brauzerning standart harakatini bekor qiladi Ha Yo'q
event.stopPropagation() Voqeani tarqalishini yoki balonlashini to'xtatadi Yo'q Ha