首先讓我說我自己學習了腳本,所以我的方法可能有點奇怪。當使用AJAX放置時,Thickbox無法正常工作
我想使用AJAX將圖片調用爲div,但使用thickbox標籤,因此當單擊圖像縮略圖時,使用Thickbox(jQuery)顯示大圖像。
下面是示例頁面:click here
OK,請在「照片」的menue,然後在左側menue打開一個圖像,例如,「黃昏」。黃昏圖像將被放置在主框中。 現在,我想在點擊它時使用Thickbox打開圖像。但它不起作用,它只是在同一個窗口中打開圖像。
然而ThickBox的正常工作,如果我只是一個圖像添加到這樣的test2.php:
<a href="images/test1.jpg" class="thickbox" rel="gallery"><img id="images" src="images/test1.jpg" alt="Single Image" /></a>
這裏是我的後臺是如何構成的。 將所有需要的js文件(jQuery,thickbox等)集成到test2.php中
當單擊照片菜單中的某個鏈接時,AJAX調用將發送到帶有照片ID的getwork.php 。
function createRequestObject()
{
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer")
{
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
var katcheck;
function sndReq(req)
{
var req2 = req;
katcheck = req.slice(0, 1);
if (katcheck == "k")
{
var katid = req2.slice(3,4);
http.open('get', 'getkat.php?kat='+katid);
http.send(null);
http.onreadystatechange = handleResponse;
}
else
{
if(startcheck==true){ var param = req;
http.open('get', 'getwork.php?id='+param);
http.send(null);
http.onreadystatechange = handleResponse;}
else{
$('#videoleft')
.animate( {"left": "-800px"},
600, 'easeInQuad',
function(){
var param = req;
http.open('get', 'getwork.php?id='+param);
http.send(null);
http.onreadystatechange = handleResponse;
} // this is the callback function
)
.animate(
{"top": "0px", "left": "800px"},
{ queue:true, duration:1},
function(){$(this).hide();}
);
}
}
}
function handleResponse()
{
if(http.readyState == 4)
{
var response = http.responseText;
if (katcheck == "k")
{
document.getElementById("videomenue").innerHTML = response;
$("#videomenue").animate({"top": "0px", "left": "0px"},{ queue:true, duration:1}).show(500);
$('#videoleft').css('float', 'right');
}
else
{
document.getElementById("post").innerHTML = response;
if(startcheck==true){ startcheck=false;}
else
{
$('#videoleft').show().animate({"top": "0px", "left":"0px"},{ queue:true, duration:800, easing: 'easeOutBack'});
}
}
}
}
OK,現在在getwork.php會發生什麼:
{
$imgecho = ('<div class="img"><a href="'.$src.'?height=300&width=300modal=true" class="thickbox" rel="gallery"><img src="'.$image.'" width="'.$width1.'" height="'.$heightpic.'" alt="'.$row['title'].'" style="border: solid 1px grey;" /></a></div>');
}
echo ('<div class="titleBG"></div><p class="title">'.$row['title'].'</p>'.$imgecho.''); break;
我當然剝離下來,只在重要的部分。該PHP文件正常工作,但不知何故厚盒所需的應用標籤沒有工作。 我甚至在Thickbox網站上增加了?height=300&width=300modal=true
這樣的建議,但它不起作用。 我無法向自己解釋,它已經在困擾我很長一段時間了。
我希望有人能幫助我。非常感謝你!
哇!非常感謝!它起作用(經過一次小小的改正)!你可以看到它,如果你想在同一個目錄下的test3.php頁面!我知道jQuery能夠做我需要的東西,我只是沒有想出如何解決AJAX的事情,所以我保留了我的舊AJAX代碼來獲取數據。我現在試着理解你的代碼。謝謝! – Cletus 2010-02-11 15:38:21
@Pekka當Thickbox調用它自己的init時,它會調用'tb_init('a.thickbox,area.thickbox,input.thickbox')'它告訴它在哪裏看。通過再次調用它,並將搜索範圍設置爲剛剛完全替換了其'html'的元素,應該沒有問題。 – 2010-02-11 15:44:27
@ Anti-Depressiva很高興能爲您提供幫助,祝您的項目順利! – 2010-02-11 15:45:05