문제

간단한 PHP 에코에서 내 페이지의 두꺼운 상자를 가져 오기 위해 링크를 반환하려고 할 때 약간의 문제가 발생합니다. 기본적으로 내가 가진 것은 다음과 같습니다.

몇 가지 페이지가있는 페이지에는 다음과 같은 문장이 포함됩니다.

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

포함 된 각 진술은 단지 짧은 쿼리를 가져 오는 PHP 파일을 가리키고 앵커 참조와 링크를 ECOS하여 사용자가 다음과 같은 링크 텍스트를 클릭 할 때 인라인 두께 (양식)를 열어줍니다.

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를 다시로드하여 변경 사항을 표시합니다.

이것은 페이지가 처음로드 될 때 작동하지만 양식을 제출하고 반환 된 링크를 다시 클릭하려고 시도하면 아무 일도 일어나지 않습니다. 링크가 DIV를 둘러싼 링크가 포함되어 있다면 내부에 포함 된 명령문 (큰 문제가 아닙니다)이 있지만 포함 된 링크가 있으면 왜 작동하지 않는지 이해하지 못합니다. PHP 문.

누구든지 몇 가지 지침을 제공 할 수 있습니까? 나는 여기에 훌륭한 사람들이 많이 있다는 것을 알고 있으며 아마도 매우 기본적인 것을 이해하지 못할 것입니다. 감사!

도움이 되었습니까?

해결책

Thickbox를 링크를 사용하여 바인딩해야합니다 이벤트/라이브. 같은 것 :

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

따라서 Thickbox가 활성화 된 링크는 AJAX를 통해 다시로드 또는 주입 된 후 Thickbox에 대한 바인딩을 잃지 않도록합니다.

$ .ajax (또는 $ .post 또는 uthern) 메소드에 대한 콜백에서 다음을 수행 할 수 있습니다.

$.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');
                }
});

다른 팁

이것은 PHP 문제가 아닌 JavaScript 문제인 것 같습니다.

페이지가로드 될 때 이벤트를 등록하고 AJAX 이벤트가 완료되면 이벤트를 다시 표시하지 않습니다. 그래도 JavaScript를 보지 않고는 알 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top