Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обработка события click (JS, jQuery) / 3 сообщений из 3, страница 1 из 1
12.11.2009, 10:54
    #36306051
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события click (JS, jQuery)
Доброго всем времени суток,

Имеется JS-функция (jQuery), которая создаёт слой div (popup-окно) сразу после тега <body> документа.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function show_popup_window(width, title, content) {
	if ($('div#popup-window').length) return false;
	$('body').prepend('<div id="popup-window"></div>');
	$('body').click(function() {
		$('div#popup-window').remove();
		$('body').unbind('click');
	});
}

Функция вызывается по клику по элементу, например:

Код: plaintext
<div id="clickme" onclick="show_popup_window(300, '', '');return false;">click</div>

Я хочу чтобы после открытия окна клик по любому элементу документа приводил к закрытию окна, для чего собственно в функции show_popup_window после создания окна вешается функция на событие клика по элементу body.

ОДНАКО, при клике на div id="clickme" окно открывается и СРАЗУ закрывается, поскольку срабатывает событие $('body').click (проверил опытным путём).

НЕ ПОНИМАЮ, почему? Ведь обработка клика по body назначается уже после совершения клика.
...
Рейтинг: 0 / 0
12.11.2009, 10:57
    #36306066
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события click (JS, jQuery)
пробовал и так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
.....
	$('body').click(function() {
		if (!$('div#popup-window').length) return false;
		$('div#popup-window').remove();
		$('body').unbind('click');
	});
.....

всё равно вункция отрабатывает при первом же клике (т.е. при открытии окна).
...
Рейтинг: 0 / 0
12.11.2009, 13:01
    #36306530
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события click (JS, jQuery)
разобрался с этим вопросом, в код функции до момента добавления обработки клика добавил:

Код: plaintext
1.
2.
3.
4.
5.
6.
	if (event.stopPropagation) {
		event.stopPropagation()
		event.preventDefault();
	} else {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обработка события click (JS, jQuery) / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]