Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с модальным окном (https://javascript.ru/forum/jquery/17623-problema-s-modalnym-oknom.html)

Biosi 26.05.2011 15:32

Проблема с модальным окном
 
Здравствуйте! У меня такая проблема. Пишу скрипт для вызова модального окна. Для визуализации окна использую механизмы jQuery FadeIn и FadeTo, для сокрытия - Hide.
В окне есть кнопка, по нажатию на которую выполняется некая функция, и окно закрывается.
Проблема в том, что каждый последующий раз по нажатию на эту кнопку функция выполняется несколько раз подряд, ровно столько, сколько ранее вызывалось модальное окно. В чем дело, и как решить задачу? Заранее спасибо!

Вот код (упростил до минимума):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>111</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<SCRIPT language="javascript" type="text/javascript" src="jquery-core.js"></SCRIPT>
<META content="MSHTML 6.00.6000.16608" name=GENERATOR>
<STYLE type="text/css">
.window {
display:none;
z-index:9999;
}
</STYLE>
<SCRIPT language="javascript" type="text/javascript">
onload = function(){
$(function(){
$('#butt').click(function(e){
build();
});
});
}

build = function(){
$(function(){
$('#dialog').fadeIn(2000);
$('#set').click(function(e){
alert("SET");
$('.window').hide();
});
});
}
</SCRIPT>

</HEAD>
<BODY>
<input id="butt" type="button" value="Кнопка">
<div id="dialog" class="window">Нажмите кнопку<input id="set" type="button" value="Установить"></div>
</BODY>
</HTML>

walik 26.05.2011 17:09

Вы когда открываете окно, вы постоянно вешаете обработчик, соответственно при каждом открытие вы вешаете одинаковые обработчики и они выполняются много раз.
Вешайте обработчик отдельно от функции.

Biosi 26.05.2011 17:20

А как понять - "вешаете обработчик"?

Biosi 26.05.2011 17:24

Всё, понял! Спасибо огромное!!! Вот надо же так лажануться... :)


Часовой пояс GMT +3, время: 19:45.