تفاوت event.preventDefault() و return false در جاوااسکریپت در چیست؟

mohsen2 هفته قبل
ارسال شده در
javascript

در زمان کار با رویدادها در 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(); // اطمینان از متوقف شدن رفتار پیش‌فرض
    // خوردن به خطای زمان اجرا
});

    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!