TOC
Need to learn JavaScript? jQuery is a JavaScript framework, so if you don't already know about the JavaScript programming language, we recommend that you learn it now: Learn JavaScript

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 как второй параметр, мы указываем, что только определенный обработчик события должен быть удален. Попробуйте запустить этот пример. Второе сообщение будет отображаться только после первого клика.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!