Модальное окно
Не срабатывает проверка высоты контента окна, то есть когда кликаешь первый раз на ссылку, то проверка не выполняется, а когда кликаешь второй раз, то проверка выполняется, что делать? Спасибо.
Вот эта проверка
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, время: 23:37. |