Jump to content
  • 0

Очень странное поведение скрипта - не могу найти причину ошибки


Zverushka
 Share

Question

УПД. Проблема решена - причина, использовалось hide(), вместо modalHide();

Удалите плз тему)...

Вот сайт - http://zverushka.zz.mu/palatki/

На нем есть самописный скрипт modal.js

Суть проблемы - выбираем окошко с одной из палаток и жмем кнопку "заказать". Всплывает окно. Если отправить какие-то данные на сервер, нажав кнопку отправить. То у этого окна остается класс .active и при попытке открыть другие окна - они тут же закрываются.

Закрытие окна по сабмиту реализована через $modal1.hide();

hide - это внутренняя функция плагина, сделанная через


// external functions
// $modal = $(this);
$modal.modalHide = modalHide;
$modal.modalShow = modalShow;

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

При этом, если я напишу

 $(".modal1 .close").trigger("click"); 

То есть просто сэмулирую нажатие на крестик - окно закроется корректно.

Хотя код по сути тот же самый


// hide on click
$close.click(modalHide);

А если закрою через функцию - закроется некорректно (на нем повиснет класс .active, означающий, что оно активное). Хотя обе функции в данном случае просто взывают к одной функции modalHide()

Что еще более сомнительно - на открытии окна привязывается событие


$("body").bind("click.bodyclick", function(){
if ($modal.hasClass("active")) {
modalHide();
}
});

На его скрытии - оно отвязывается


$("body").unbind(".bodyclick");

То есть по идее даже эти 2 строки кода должны не давать происходить автоскрытию по клику, потому что событие отвязано...

Чтобы было проще работать с сайтом - вот его архив

http://zverushka.zz....ki/sitetest.rar

Стоп, есть вариант....

Edited by Zverushka
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Согласна, но для себя не могу определиться до конца, как лучше, чтобы active был убран сразу вначале анимации или в конце ее.

А так спасибо, что смотрите мой код! Хотелось бы его улучшить и усовершенствовать!

Link to comment
Share on other sites

  • 0

Согласна, но для себя не могу определиться до конца, как лучше, чтобы active был убран сразу вначале анимации или в конце ее.

А так спасибо, что смотрите мой код! Хотелось бы его улучшить и усовершенствовать!

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy