Php возвращает ссылку толстого ящика, которая не работает

StackOverflow https://stackoverflow.com/questions/1249130

  •  12-09-2019
  •  | 
  •  

Вопрос

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

Страница с некоторыми из них включает такие утверждения, как:

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

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

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 с оператором включения внутри (что не так уж и сложно), но я просто не понимаю, почему это не работает, если у меня есть ссылка во включенном заявление php.

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

Это было полезно?

Решение

Вам нужно привязать толстый ящик к вашим ссылкам, используя События/живые трансляции.Что-то вроде:

$("a.thickbox").live("click",function() {
    tb_init('a.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');
                }
});

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top