This article has been localized into Russian by the community.
Метод unbind()
В прошлой главе мы использовали метод bind() чтобы подписаться на события через jQuery(). Однако, иногда требуется и отписаться от этих событий по некоторым причинам, чтобы обработчик больше не вызывался при возникновении события. Это делается с помощью метода ubnind(), простейший вид которого представлен ниже:
$("a").unbind();
Эта команда удалит все обработчики событий, которые вы прикрепили с помощью bind(). Однако, вам может потребоваться удалить только определенные обработчики событий, например, клик и двойной клик:
$("a").unbind("click doubleclick");
Просто отделите типы событий запятой. Вот более сложный пример, в котором можно увидеть эффект этого всего:
<a href="javascript:void(0);">Test 1</a>
<a href="javascript:void(0);">Test 2</a>
<script type="text/javascript">
var msg = "Hello, world!";
$(function()
{
$("a").bind("click", function() {
$("a").unbind("click");
alert("First and only message from me!");
});
});
</script>
В этом маленьком примере мы подписываемся на событие click для всех ссылок. Однако, как только вы кликните по какой-либо ссылке, мы удаляем все подписки и сообщаем об этом. Данный обработчик больше не будет активироваться кликом по ссылкам.
jQuery позволяет подписываться на одно и то же событие несколько раз. Это удобно, когда вам нужно, чтобы одно и то же событие срабатывало по-разному в разных ситуациях. Это делается путем вызова bind() каждый раз, когда вам нужно прикрепить фрагмент кода, как здесь:
<a href="javascript:void(0);">Test 1</a>
<a href="javascript:void(0);">Test 2</a>
<script type="text/javascript">
var msg = "Hello, world!";
$(function()
{
$("a").bind("click", function() {
alert("First event handler!");
});
$("a").bind("click", function() {
alert("Second event handler!");
$("a").unbind("click");
});
});
</script>
Однако, это демонстрирует нам вероятность того, что когда вы отвязываете событие, вы, возможно, удаляете и другие события из остального кода, хотя вы все еще можете в них нуждаться. Если вы попробуете запустить данный пример - вы увидите, что когда вы кликаете по любой из ссылок, удаляются все обработчики события click. jQuery позволяет задать и второй параметр, который содержит ссылку на определенный обработчик, который вы хотите удалить. Таким образом, мы можем удостовериться, что удаляем только тот обработчик, который собирались. Вот пример:
<a href="javascript:void(0);">Test 1</a>
<a href="javascript:void(0);">Test 2</a>
<script type="text/javascript">
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);
});
</script>
Задав handler2 как второй параметр, мы указываем, что только определенный обработчик события должен быть удален. Попробуйте запустить этот пример. Второе сообщение будет отображаться только после первого клика.