Как заставить FancyBox не скрывать исходный встроенный блок

Я пытаюсь использовать Fancybox для «расширения» встроенного элемента на странице, чтобы его было легче читать. В исходном положении элемент виден, но отображается в маленьком поле прокрутки. Под ним находится ссылка «Развернуть». Щелчок по ссылке вызывает Fancybox для помещения элемента в Fancybox.

Это все работает нормально.

Но когда вы нажимаете «Закрыть», он возвращает исходный элемент на место, но добавляет к элементу style="display:none" в качестве атрибута, в результате чего текст исчезает.

Вот минимальный пример, который показывает, что происходит.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Fancy Box data test</title>
    <meta name="generator" content="BBEdit 10.5" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
    <script type="text/javascript" src="fancybox/source/jquery.fancybox.js"></script>
    <script type="text/javascript" src="fancybox/source/jquery.fancybox.pack.js"></script>
    <link rel="stylesheet" href="/fancybox/source/jquery.fancybox.css" type="text/css" media="screen" />
    <script type="text/javascript" >
        jQuery.noConflict();
        jQuery(document).ready( function() {
            jQuery("a#inline").fancybox(
                {
                'hideOnContentClick': true
                })
            }
        );
    </script>
    <style type="text/css">
        .agreement-content { 
            overflow:auto; 
            height:12em; 
            padding:10px; 
            background-color:#fbfaf6; 
            border:1px solid #bbb6a5; 
            width: 300px;
            margin: 30px;
            }
    </style>
</head>
<body>
<p>
This is testing having FancyBox "expand" a custom field.
<p>

<div class="agreement-content">
    <div id="lightCoH">
<p>
    Supported neglected met she therefore unwilling discovery remainder. Way sentiments two indulgence uncommonly own. Diminution to frequently sentiments he connection continuing indulgence. An my exquisite conveying up defective. Shameless see the tolerably how continued. She enable men twenty elinor points appear. Whose merry ten yet was men seven ought balls. 
</p>

<p>
Blind would equal while oh mr do style. Lain led and fact none. One preferred sportsmen resolving the happiness continued. High at of in loud rich true. Oh conveying do immediate acuteness in he. Equally welcome her set nothing has gravity whether parties. Fertile suppose shyness mr up pointed in staying on respect. 
</p>

    </div>
</div>
<a id="inline" href="#lightCoH">Expand</a>
</body>
</html>

Глядя на исходный код в представлении элементов инструментов разработчика Chrome, вы можете увидеть, как он изменяет файл <div id="lightCoH">.

Когда страница загружается, как источник выше.

Когда вы нажимаете на ссылку развернуть, она становится <div class="fancybox-placeholder" style="display: none;"></div>

Когда вы закрываете модную коробку, она становится <div id="lightCoH" style="display: none;">

Я попытался ввести пустой атрибут стиля, думая, что он подберет его и сбросит до исходного значения, но не повезло.

Может быть, Fancybox так и не работает - только с невидимыми встроенными элементами. Если да, то есть ли обходной путь, возможно, с помощью обратного вызова afterClose?


person Ron Davis    schedule 04.01.2013    source источник


Ответы (1)


Просто добавьте обратный вызов для восстановления встроенного содержимого, например:

afterClose: function() {
    $("#lightCoH").show();
}

См. JSFIDDLE

Кстати, hideOnContentClick — это вариант для Fancybox v1.3.x... вместо этого вы должны использовать closeClick. Проверьте https://stackoverflow.com/a/8404587/1055987 для получения дополнительной информации.

person JFK    schedule 04.01.2013
comment
Спасибо, это именно то, что мне было нужно. - person Ron Davis; 06.01.2013