متد stop

توقف انیمیشن‌های در حال اجرا با متد stop()

متد stop()

متد stop() انیمیشن یا افکتِ در حال اجرا را قبل از پایان متوقف می‌کند:

$(selector).stop(stopAll, goToEnd);

مثال ساده

// توقف انیمیشن در حال اجرا
$("#stop").click(function() {
    $("#panel").stop();
});

چرا stop مهم است؟

اگر کاربر سریع و پشت‌سرهم روی دکمه‌ای کلیک کند که انیمیشن اجرا می‌کند، انیمیشن‌ها در صف جمع می‌شوند و عنصر مدت طولانی بعد از توقف کلیک، به حرکت ادامه می‌دهد! راه‌حل استاندارد، صدا زدن stop() قبل از هر انیمیشن جدید است:

// ✅ الگوی استاندارد: stop قبل از انیمیشن جدید
$("#panel").stop().slideToggle();

// ❌ بدون stop: با کلیک‌های سریع، انیمیشن‌ها انباشته می‌شوند
$("#panel").slideToggle();

ترکیب پارامترها

// فقط انیمیشن فعلی متوقف شود (پیش‌فرض)
$("#panel").stop();

// همه صف لغو شود و انیمیشن فعلی همان‌جا قطع شود
$("#panel").stop(true);

// همه صف لغو شود و انیمیشن فعلی فوراً به پایان برسد
$("#panel").stop(true, true);

مثال کاربردی: منوی هاور با stop

// منوی کشویی بدون مشکل انباشته شدن
$(".menu-item").hover(
    function() {
        $(this).children(".submenu").stop().slideDown(200);
    },
    function() {
        $(this).children(".submenu").stop().slideUp(200);
    }
);
قانون طلایی: هر جا افکتی دارید که با رویدادهای مکرر (hover، کلیک سریع) اجرا می‌شود، قبل از آن .stop() بگذارید. این کار جلوی «پرش» و «لرزش» عناصر را می‌گیرد.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل jQuery است.

ابزارهای مرتبط