Встроенная проблема Thickbox - PullRequest
2 голосов
/ 05 ноября 2010

Я пытаюсь создать модальное окно со скрытым содержимым, используя Thickbox Он прекрасно открывает окно, но не уверен, почему он не показывает содержимое внутри id = "hiddencontent".

я следую как указано в примерах для встроенного http://jquery.com/demo/thickbox/# -Спасибо

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="thickbox.js"></script>

<link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" />
</head>

<body>
<a href="#TB_inline?height=155&width=300&inlineId=hiddenContent" class="thickbox">Show Content</a> 

<div id="hiddenContent" style="display: none">inline content comes here</div> 
</body>
</html>

Ответы [ 4 ]

2 голосов
/ 05 ноября 2010

Похоже, что у вас нет файла css, вы можете скопировать файл cssbox на http://jquery.com/demo/thickbox/#sectiona-3 на свою страницу (или сохранить как файл style.css).

- редактироватьизвините, не заметил, что css уже загружен: (

Кстати, только что нашел решение, попробуйте добавить тег p внутри вашего hiddenContent div:

<div id="hiddenContent" style="display: none"><p>inline content comes here</p></div> 

Hope помогает;)

1 голос
/ 19 октября 2011

Это ошибка в Thickbox.Вот как вы можете это исправить:

Внутри Thickbox.js

на или около строки 221 вы должны увидеть эту строку кода:

$("#TB_ajaxContent").append($('#'+params['inlineId']).children());

изменить его на это:

$("#TB_ajaxContent").html($('#'+params['inlineId']).html())

, а затем на строке 223 или около нее вы увидите эту строку:

$('#'+params['inlineId']).append($("#TB_ajaxContent").children());

отключите строку, добавив две косые черты перед ней следующим образом:

//$('#'+params['inlineId']).append($("#TB_ajaxContent").children());

Объяснение:

Когда Thickbox копирует содержимое из скрытого div в контейнер Thickbox, это происходит путем копирования всех элементов .children ().Если внутри вашего скрытого элемента div есть только текст, ДЕТЕЙ НЕТ, потому что текст сам по себе не является дочерним элементом.Вот почему упаковка вашего контента в тег <p> будет работать, потому что теперь есть дочерний элемент (тег <p>).

Так что если вы хотите, чтобы текст только в вашем скрытом элементе div использовал .html()вместо этого будет захватывать все в вашем скрытом div.Отключение второй строки предотвращает попытку копировать содержимое обратно в скрытый элемент div при закрытии окна, что приведет к дублированию содержимого скрытых элементов в дочерних тегах.

0 голосов
/ 13 августа 2014

Функция tb_position () должна быть обновлена.

это условие

if (! (JQuery.browser.msie && jQuery.browser.version <7)) </strong>

является причиной ошибки.

jQuery больше не поддерживает jQuery.browser. Для определения IE6 в этом случае измените вышеуказанное условие на

if (! (/ \ BMSIE 6 / .test (navigator.userAgent)))

0 голосов
/ 26 сентября 2012

Нет необходимости редактировать файл .js, решение довольно простое.

Возможно, чуть позже :), но я решил проблему, изменив только символ ? в #TB_inline? на&

Проблема связана с внутренней функцией parseQuery tickbox, которая анализирует совпадающие пары, но срывается, когда запрос имеет двойной ?, как в случае.

ОБНОВЛЕНИЕ : В некоторых случаях также необходимо исправить <p>;)

Надеюсь, это поможет.

...