تفاوت event.preventDefault() و return false در جاوااسکریپت در چیست؟
در زمان کار با رویدادها در JavaScript، خصوصاً در jQuery، دو روش اصلی برای جلوگیری از انجام رفتار پیش فرض و جلوگیری از پیشرفت رویداد وجود دارد: event.preventDefault()
و return false
.
روش اول: event.preventDefault()
این متد به شما این امکان را میدهد که رفتار پیش فرض یک رویداد را متوقف کنید. به عنوان مثال، زمانی که بر روی یک لینک کلیک میکنید، معمولاً مرورگر به آدرس مشخص شده در href میرود. با استفاده از event.preventDefault()
میتوانید این رفتار را متوقف کنید بدون اینکه بخواهید از کد خارج شوید:
$('a').click(function (e) {
e.preventDefault();
// مدیریت سفارشی دیگر
});
روش دوم: return false
هنگامی که در یک هندلر رویداد از return false
استفاده کنید، این عمل مانند ترکیب e.preventDefault()
و e.stopPropagation()
عمل میکند. به عبارت دیگر، با این کار هم رفتار پیش فرض متوقف میشود و هم از ادامهی انتشار رویداد جلوگیری میشود. این روش بیشتر در jQuery رایج است زیرا به عنوان یک راه ساده و کوتاه برای مدیریت رویدادها بکار می رود:
$('a').click(function () {
// مدیریت سفارشی دیگر
return false;
});
نکات مهم
انتشار رویداد: باید توجه داشته باشید که event.preventDefault()
تنها رفتار پیشفرض را متوقف میکند و برای جلوگیری از انتشار رویداد در درخت DOM باید از event.stopPropagation()
استفاده کنید. در حالی که return false
در jQuery این کار را انجام میدهد.
اطمینان از جلوگیری از اجرای حالت پیش فرض: هنگامی که از return false
استفاده میکنید، احتمال این وجود دارد که کد به خطا برخورد کند و ممکن است به سادگی به return false
نرسد. در مقایسه، با استفاده از event.preventDefault()
در خط اول تابع، شما میتوانید اطمینان حاصل کنید که رفتار پیشفرض متوقف خواهد شد، حتی اگر در ادامه خطا پیش بیاید:
$('a').click(function (e) {
e.preventDefault(); // اطمینان از متوقف شدن رفتار پیشفرض
// خوردن به خطای زمان اجرا
});