Модальное окно
Не срабатывает проверка высоты контента окна, то есть когда кликаешь первый раз на ссылку, то проверка не выполняется, а когда кликаешь второй раз, то проверка выполняется, что делать? Спасибо.
Вот эта проверка if($('.window').height()+60>=$(window).height()){ $('body').css({ 'overflow':'hidden', 'padding-right':'17px', }); } Вот полный код $(function(){ $.fn.window_open = function(title, param){ if(param == 'photo'){ var id = $(this).attr('id'); id = id.substr(1); var content = '<img src="body/img/orig/'+id+'.jpg" />'; title = title+' '+id+' из '+$('.text_article').children().length; } $('<div class="wrapper_window">'+ '<div class="window">'+ '<div class="header_window">'+ '<div class="wrapper_window_close"><a href="" class="window_close">Закрыть</a></div>'+ '<div class="title_window">'+title+'</div>'+ '</div>'+ '<div class="clear"></div>'+ '<div class="content_window">'+content+'</div>'+ '</div>'+ '</div>').prependTo('body'); if($('.window').height()+60>=$(window).height()){ $('body').css({ 'overflow':'hidden', 'padding-right':'17px', }); } } $('a[name=window]').click(function(){ $(this).window_open('Фото', 'photo'); return false; }); $('.window_close').live('click', function(){ $('.wrapper_window').remove(); $('body').css({ 'overflow':'auto', 'padding-right':'0', }); return false; }); }); |
Цитата:
Либо делать проверки с задержкой( на время загрузки окна) по таймеру, либо дальнейшее продолжение функции(установкой ключа страбатывания) запускать по событию onload данного окна. |
Deff,
Не могли бы вы по подробней про второй способ рассказать? |
Цитата:
var timerID_0; clearTimeout(timerID_0); timerID_0 = setTimeout(function(){ if($('.window').height()+60>=$(window).height()){ $('body').css({ 'overflow':'hidden', 'padding-right':'17px', }); } }, 3000) |
Deff,
А нельзя чтобы не ждать три секунды? Возможно ли сделать такое без задержки. А вот это окно работает нормально не могу понять, почему? $('a[name=window]').click(function(){ var id = $(this).attr('href'); var content = $(id).html(); var get_window = function(){ var structure_window = '<div class="window">'+ '<div class="conteiner_content">'+ '<div class="conteiner_info">'+ '<a href="" class="close"></a>'+id+ '</div>'+ '<div class="content" style="display:block;">'+ '<div>'+content+'</div>'+ '</div>'+ '</div>'+ '</div>'; return structure_window; } $('body').prepend(get_window()); $('.window').fadeIn(); if($('.conteiner_content').height()+60>=$(window).height()){ $('body').css({'overflow':'hidden','padding-right':'17px'}); } else{ $('body').css({'overflow':'auto'}); } return false; }); |
jeysmook,
Это окно работает нормально, поскольку нет новых загрузок фреймов, документов или Aякс подгрузок. Задержки и ожидания onload нужны тольк в таких случаях. При вариантах без них обычно достаточно $(document).ready(function(){ //Тут коды }); |
Deff,
спасибо кажется разобрался) Получилось вот так: $('.content_window').children().load(function(){ if($('.window').height()+60>=$(window).height()){ $('body').css({ 'overflow':'hidden', 'padding-right':'17px', }); } }); |
Часовой пояс GMT +3, время: 21:17. |