Php возвращает ссылку «толстый ящик», которая не работает - PullRequest
2 голосов
/ 08 августа 2009

У меня возникает небольшая проблема, когда я пытаюсь вернуть ссылку, чтобы открыть толстую коробку на моей странице из простого php-эха. В основном то, что у меня есть:

Страница с несколькими предложениями, такими как:

<?php 
    include ("display_header.php");
?>

Каждый из операторов include просто указывает на php-файл, который извлекает короткий запрос и выводит ссылку с привязкой ref, чтобы открыть встроенный толстый ящик (с формой), когда пользователь нажимает на текст ссылки, например:

echo "<a href='#TB_inline?height=265&width=225&inlineId=header_change' class='thickbox' style='text-decoration:none; color:#990000'>";
echo "Query Result etc";
echo "</a>";

Поэтому, когда пользователь нажимает на ссылку на странице, появляется всплывающее окно с формой. Пользователь вводит свои изменения в данный раздел, нажимает на кнопку отправки, и jquery ajax публикует форму и перезагружает div с помощью оператора include для отображения изменений.

Это работает при первой загрузке страницы, но как только я отправляю форму и пытаюсь снова щелкнуть по возвращенной ссылке, ничего не происходит. Кажется, это работает, если у меня есть ссылка, окружающая div с помощью оператора include внутри (что не составляет особого труда), но я просто не понимаю, почему это не работает, если у меня есть ссылка во включенном PHP заявление.

Может кто-нибудь предложить какое-нибудь руководство? Я знаю, что здесь много замечательных людей, и я, наверное, просто не понимаю чего-то очень простого. Спасибо!

Ответы [ 2 ]

3 голосов
/ 08 августа 2009

Вам необходимо привязать Thickbox к своим ссылкам, используя Events / live . Что-то вроде:

$("a.thickbox").live("click",function() {
    tb_init('a.thickbox');
});

Это предотвратит потерю связи ваших ссылок с поддержкойboxbox с Thickbox после их перезагрузки или внедрения через ajax.

Вы также можете сделать это в обратном вызове вашего метода $ .ajax (или $ .post или что-то еще), например ::

$.ajax({
    type:       "GET",
    url:        "/ajax-content.php",
    cache:      false,
    data:       "f=foo&b=bar",
    loading:    $('.loading').html(''),
    success:    function(html) {
                    $('#ajaxContent').html(html);
                    //re-attach thickbox
                    tb_init('a.thickbox, area.thickbox, input.thickbox');
                }
});
0 голосов
/ 08 августа 2009

Похоже, что это проблема с JavaScript, а не проблема с PHP.

Мне кажется, что вы регистрируете событие, когда страница загружается, и как только событие ajax завершено, вы не перерегистрируете событие. Хотя я не могу этого знать, не увидев javascript.

...