PHP и jquery
Есть модальное окно, и есть php функция для просмотра картинок. Проблема в том , что я не могу их никак соединить ...
Мне нужно, чтобы в модальном окне выводилась фотка на которую кликнули. А при клики на фотку в модальном окне выводилась следующая картинка и т.д. Это аналогично Вконтакте. http://vk.com/id64969895?z=photo64969895_283837685%2Falbum649698 95_0%2Frev ------------------------------------------------------------------ //php функция переключает фотки $photo_id = $_GET['photo']; echo'<div class="album">'; for($i=1; $i<25; $i++){ echo'<a href="photos.php?photo='.$i.'" name="window"><img src="photos/mini/'.$i.'.jpg" /></a>'; } echo'</div>'; echo $photo_id; function photo_gallery($id, $max){ $next = $id+1; $window_skillet = ' <div class="window">'. '<div class="conteiner_content">'. '<div class="conteiner_info">'. '<a href="photos.php" class="close"></a>'. '</div>'. '<div class="content">'. '<div><a href="photos.php?photo='.$next.'"><img src="photos/'.$id.'.jpg" /></a></div>'. '</div>'. '</div>'. '</div> '; if($id>$max-1){echo'<div class="window"><a href="photos.php?photo=1">Начать заново</a></div>';} elseif($id==0){echo'<div class="window" style="display:none;"></div>';} else{echo $window_skillet;} } photo_gallery($photo_id, $i); //javascript модальное окно $(document).ready(function(){ $('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; }); $('.close').live('click', function(){ $('.window').remove(); $('body').css({'overflow':'auto','padding':'0'}); return false; }); }); |
Вот так, но только надо бы photo.php подправить, флаг например добавить, чтобы если был клик по миниатюре - передавалось одно значение флага и соответсвенно выполнялась функция возвращающая ту самую структуру
$window_skillet = ' <div class="window">'. '<div class="conteiner_content">'. '<div class="conteiner_info">'. '<a href="photos.php" class="close"></a>'. '</div>'. '<div class="content">'. '<div><a href="photos.php?photo='.$next.'"><img src="photos/'.$id.'.jpg" [B]class="big"[/B]/></a></div>'. '</div>'. '</div>'. '</div> '; И аяксом подтянуть необходимое изображение вместе со структурой: $.post("photos.php", { photo: $(this).attr('id')} function(data) { var structure_window = data; }); В итоге получим нечто подобное: $(document).ready(function(){ $('a[name=window]').click(function(){ var id = $(this).attr('href'); var content = $(id).html(); var get_window = function(){ $.post("photos.php", { photo: $(this).attr('id')} function(data) { var structure_window = data; }); $('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; }); $('.big').click(function(){ $.post("photos.php", { photo: $(this).attr('id')} function(data) { $('div.window').html = data; }); }); $('.close').live('click', function(){ $('.window').remove(); $('body').css({'overflow':'auto','padding':'0'}); return false; }); }); |
zlodeeev, я просто не пойму, как мне GET из php поместить в модальное окно на jquery. Просто страница перезагружается и jquery начинает работу заново. Если можно то принцип объясните.
|
jeysmook,
Функция $.post() - передает параметры php файлу и ждет ответа переданного от него обратно. По сути,е сли пофантазировать, то можно представить, что не пользователь открывает страничку photo.php, а сам браузер незаметно от пользователя. Вот мы и делаем $.post("photos.php", { photo: $(this).attr('id')} // открываем photo.php?photo=*id фотографии, по которой был клик* function(data) { // после передачи запускаем функцию, в качестве ответа от photo.php будет переменная data $('div.window').html = data; // запихиваем, по сути всю страничку photo.php?photo=*id* в блок div.window } ); Т.е. мы вставляем страницу photo.php в ту часть кода, где это нам необходимо, осталось только сделать photo.php таким образом, чтобы он выводил только структуру попапа вместе с самой картинкой и ссылкой на следующую, что у вас уже сделано. |
zlodeeev,
Спасибо большое , буду разбираться, по мере разбора буду задавать вопрос в этой теме ) |
Часовой пояс GMT +3, время: 11:08. |