با سلام به شما دوستای گرامی و عزیز ، از اینکه همراه ماهستید از شما سپاسگذاریم. درمورد متد unbind()د میخوام براتون اموزشی بگذارم .همانطورکه میدانید در درس قبلی، متد bind() را برای متصل کردن یک رخداد به المان معین بکار بردیم. گاهی لازم است رخدادی که قبلا با متد bind() به المان پیوند دادیم را بنا به دلایلی از آن المان بار دیگر unbind (جدا) کنیم تا با فعال شدن رخداد، دیگر event handler اجرا نشود. این کار را در جی کوئری با متد unbind() انجام می دهیم. نحوه ی استفاده از آن در زیر نمایش داده شده است:
$(“a”).unbind();
این متد تمامی event handler هایی را که با تابع bind() به المان مورد نظر متصل شده بود را حذف می کند. اما گاهی لازم است رخدادهایی از نوع مشخص (برای مثال فقط کلیک یا دابل کلیک) را از المان مورد نظر حذف کنیم:
$(“a”).unbind(“click doubleclick”);
کافی است رخدادهایی را که می خواهید از المان مورد نظر حذف شوند، به عنوان پارامتر به متد unbind پاس دهید و سپس آن ها را داخل پرانتز متد نام برده توسط ویرگول از هم جدا نمایید.
نمونه یک
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
var msg = “Hello, world!”;
$(function () {
$(“a”).bind(“click”, function () {
$(“a”).unbind(“click”);
alert(“First and only message from me!”);
});
});
در این مثال، رخداد کلیک را برای تمامی لینک ها تعریف می کنیم (با متد bind() رخداد کلیک را به المان های متصل می کنیم). اما زمانی که بر روی لینک کلیک می شود، تمامی رخدادهایی که به لینک ها bind شده بودند حذف گردیده و پیغام ” first and only message from me ” به نمایش در می آید. بنابراین event handler مربوطه دیگر با کلیک کاربر بر روی المان a، اجرا نمی شود.
jQuery این اجازه را به شما می دهد تا یک نوع رخداد (مثال کلیک) را چندین بار به یک المان متصل کنید. این امکان به خصوص در مواقعی بکار می آید که شما بخواهید در شرایط مختلف رخداد یکسان کارهای مختلفی را برای شما انجام دهد. کافی است متد bind() را هر بار که می خواهید یک تکه کد را به المان مورد نظر متصل کنید، فراخوانی نمایید:
نمونه دو
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
var msg = “Hello, world!”;
$(function () {
$(“a”).bind(“click”, function () {
alert(“First event handler!”);
});
$(“a”).bind(“click”, function () {
alert(“Second event handler!”);
$(“a”).unbind(“click”);
});
});
اما، این کار ممکن باعث شود زمانی که یک event را از المان حذف یا unbind کردید، رخدادهایی را که در جای دیگر کد به المان متصل کردید، و همچنان به آن نیاز دارید، نیز حذف گردند. اگر مثال زیر را امتحان کنید، می بینید که با کلیک بر روی لینک تمامی رخدادهایی که به المان ، bindشده بودند، حذف می گردند. jQueryاین اجازه را به شما می دهد تا یک آرگومان دوم تعریف کنید که حاوی ارجاعی به handler مورد نظر که قصد حذف آن را دارید، می باشد. بدین وسیله تنها آن رخدادی حذف می گردد که دیگر به آن نیازی ندارید:
نمونه سه
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
var msg = “Hello, world!”;
$(function () {
var handler1 = function () {
alert(“First event handler!”);
}
var handler2 = function () {
alert(“Second event handler!”);
$(“a”).unbind(“click”, handler2);
}
$(“a”).bind(“click”, handler1);
$(“a”).bind(“click”, handler2);
});
با ارسال handler2 به عنوان آرگومان دوم به متد unbind()، فقط event handler دلخواه حذف می شود. مثال زیر را امتحان کنید. خواهید دید که پیغام دوم تنها اولین باری که بر روی لینک کلیک می کنید، نمایش داده می شود.