Как подгрузить AJAXом блок

Главные вкладки

Аватар пользователя gumk gumk 22 декабря 2008 в 21:37

Добрый день, мне необходимо сделать кнопку, при нажатии на которую подгружался бы блок, как это можно реализовать?

Комментарии

Аватар пользователя HIgor1968 HIgor1968 22 декабря 2008 в 23:45

Самое простое использовать модуль Lightbox2
и конструкцию типа. Где MyCode.php твой всплывающий блок.

<a href="MyCode.php" rel="lightmodal">MyCode</a>

Но если хочешь занятся извращенным сексом, и поразбиратся в jQuery (соответственно при проверке примера эта библиотека доложна быть включена.) Если поставишь Lightbox2, то она подключается вместе с ним.
Вот пример на коленке с коментами, код ниже можно просто вставить в новый блок.
Использовал подобное здесь - нажми на меню поиск недвижимости справа, но там в блоке еще куча всего:

<script type="text/javascript">
//Вынес переменные за пределы функций, для удобства правки
//id дива для затемнения.
var bg_fon = "#backgroundPopup";
//id всплывающего дива
var fly_block = "#fly_bl"
//id зоны активации всплывающего окна
var key_on = "#key_on"
//id зоны закрытия всплывающего окна
var key_off = "#key_off"
//загружаем всплавающее окно
function loadPopup(){
//черный прозрачный фон на сайт при необходимости, можно вписать неводимыл в шаблон, можно сделать
// в функции predPopup, я не делал поэтому не описываю, если затенять сайт не надо то код связанный с #backgroundPopup
// убираем.
                $(bg_fon).css({
                        "opacity": "0.1"
                });
                $(bg_fon).fadeIn("2000");
                $(fly_block).fadeIn("slow");
}
//отключаем окно
function disablePopup(){
                $(bg_fon).fadeOut("slow");
                $(fly_block).fadeOut("slow");
}

function predPopup(){
//Вычисляем рабочюю зону экрана для расчетов (например чтобы плавающий блок по центру экрана разместить)
        var windowWidth = screen.availWidth;
    var windowHeight = screen.availHeight;
//Посчитал размеры плавающего блока
        var popupWidth = 200;
        var popupHeight = 200;
       
//Далее настраиваем свои CSS селекторы на разные HTML - элементы. Можем добавить своих настроек.
        $(fly_block).css({
                "background" : "#fff",
                "height": popupHeight,
                "width": popupWidth,
        "position": "absolute",
                "top": windowHeight*0.1,
                "left": "20px",
        "z-index": "10"
        });
       
        $(bg_fon).css({
                "background" : "#000",
                "display" : "block",
                "position": "absolute",
                "top" : "0px",
                "left" : "0px",
                "height": "100%",
        "z-index": "9",
                "width": "100%"
        });
}

jQuery(document).ready(function(){ //все что внутри срабатывает только при готовности документа
//прячу плавающий блок, можно вынести в CSS
        $(fly_block).css({
        "display": "none"
        });

jQuery(key_on).click(function(){ // функция вызывается когда объект с id="#key_on" получил событие click
//готовим окно
predPopup();
//выводим окно
loadPopup();
});
jQuery(key_off).click(function(){ // функция вызывается когда объект с id="#key_off" получил событие click
disablePopup();// прячем блок
});
//альтернотивное закрытие блока по ESC
$(document).keypress(function(event){
if(event.keyCode==27){
disablePopup();
        }
});
});
</script><?php //далее собственно блок ?>
<div><a id="key_on" title="Всплывающий блок" href="#">Открыть скрытый блок</a></div>
<div id="fly_bl">Прячущийся блок ---- <a id="key_off" title="закрыть" href="#">Х</a></div>
<div id="backgroundPopup">&nbsp;</div>

Аватар пользователя HIgor1968 HIgor1968 23 декабря 2008 в 0:34

Я использовал просто TABS
Меняет конечно JS, но как подтягивать то, чем заполнять блок - твое дело. Хоть и аяксом.
Добавь в loadPopup() -

$(fly_block).html("Твое наполнение дива хоть аяксом,
                   хоть руками, дальше добавил старую
                   кнопоччку из дива - это по желанию"

                   + $(fly_block).html());
Аватар пользователя fanta@drupal.org fanta@drupal.org 15 апреля 2011 в 2:22

реализовал я предложенное решение, но есть одна проблема - мой всплывающий блок не всегда поверх всего остального контента
а конкретно - когда я на странице с js-галереей открываю этот блок - он перекрывается моей галереей

как сделать блок поверх всего контента?

Аватар пользователя TurboAndroid TurboAndroid 9 апреля 2012 в 17:29

а как сделать чтобы блок показать за пределами содержимого сайта. идеально при ширине окна меньше 1200 не показывался вообще

        $(fly_block).css({
                "background" : "#fff",
                "height": popupHeight,
                "width": popupWidth,
        "position": "absolute",
                "top": windowHeight*0.1,
                "left": (windowWidth-1024)/2+1024,
        "z-index": "10"
        });

как в скрипте написать чтобы он при смене ширины экрана не наехал на содержимое сайта (ширина сайта 1024)