Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2013, 18:30
Кандидат Javascript-наук
Отправить личное сообщение для jeysmook Посмотреть профиль Найти все сообщения от jeysmook
 
Регистрация: 24.04.2012
Сообщений: 118

Модальное окно
Не срабатывает проверка высоты контента окна, то есть когда кликаешь первый раз на ссылку, то проверка не выполняется, а когда кликаешь второй раз, то проверка выполняется, что делать? Спасибо.

Вот эта проверка
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;
	});
});
Ответить с цитированием
  #2 (permalink)  
Старый 16.01.2013, 19:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от jeysmook
Не срабатывает проверка высоты контента окна, то есть когда кликаешь первый раз на ссылку, то проверка не выполняется, а когда кликаешь второй раз, то проверка выполняется, что делать? Спасибо.
Очевидно проверка делается одновременно при создании окна, а методы .height() ( и другие) работают после полной загрузки окна,
Либо делать проверки с задержкой( на время загрузки окна) по таймеру, либо дальнейшее продолжение функции(установкой ключа страбатывания) запускать по событию onload данного окна.
Ответить с цитированием
  #3 (permalink)  
Старый 17.01.2013, 13:59
Кандидат Javascript-наук
Отправить личное сообщение для jeysmook Посмотреть профиль Найти все сообщения от jeysmook
 
Регистрация: 24.04.2012
Сообщений: 118

Deff,
Не могли бы вы по подробней про второй способ рассказать?
Ответить с цитированием
  #4 (permalink)  
Старый 17.01.2013, 15:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от jeysmook
Не могли бы вы по подробней про второй способ рассказать?
var timerID_0;
clearTimeout(timerID_0);
timerID_0 = setTimeout(function(){
  		if($('.window').height()+60>=$(window).height()){			
			$('body').css({
				'overflow':'hidden',
				'padding-right':'17px',
			});
		}
}, 3000)
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2013, 14:57
Кандидат Javascript-наук
Отправить личное сообщение для jeysmook Посмотреть профиль Найти все сообщения от jeysmook
 
Регистрация: 24.04.2012
Сообщений: 118

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, 18.01.2013 в 16:51.
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2013, 17:10
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

jeysmook,
Это окно работает нормально, поскольку нет новых загрузок фреймов, документов или Aякс подгрузок. Задержки и ожидания onload нужны тольк в таких случаях. При вариантах без них обычно достаточно
$(document).ready(function(){
  //Тут коды
});
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2013, 10:31
Кандидат Javascript-наук
Отправить личное сообщение для jeysmook Посмотреть профиль Найти все сообщения от jeysmook
 
Регистрация: 24.04.2012
Сообщений: 118

Deff,
спасибо кажется разобрался) Получилось вот так:
$('.content_window').children().load(function(){		
			if($('.window').height()+60>=$(window).height()){			
				$('body').css({
					'overflow':'hidden',
					'padding-right':'17px',
				});
			}
		});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модальное окно div'ом codingfighter Общие вопросы Javascript 28 03.09.2013 15:07
Как можно перемещать модальное окно? izcian Общие вопросы Javascript 2 06.10.2012 19:20
Посоветуйте как сделать модальное окно battrack jQuery 3 12.07.2012 15:42
Подскажите как открыть модальное окно "fancybox" из скрипта js dgabets jQuery 1 18.02.2012 18:05
Как запустить модальное окно из информационного окна google maps? www123 jQuery 5 04.09.2011 23:38