首先让我说我是自学脚本的,所以我的方法可能有点奇怪。
我想使用 AJAX 将图像调用到一个 div 中,但带有一个厚框标签,因此当单击图像拇指时,使用厚框(jQuery)显示大图像。
这是示例页面:单击此处
好的,请点击菜单中的“照片”,然后打开左侧菜单中的一张图片,例如“黄昏”。黄昏图像将放置在主框中。现在我想在你点击它时使用Thickbox打开它。但它不起作用,它只是在同一个窗口中打开图像。
但是,如果我像这样将图像添加到 test2.php,Thickbox 可以正常工作:
<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
当单击照片菜单中的一个链接时,将向 getwork.php 发送一个 AJAX 调用,并带有照片的 ID。
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'});
}
}
}
}
好的,现在 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
在Thickbox网站上添加了类似的建议,但它不起作用。我无法向自己解释它,它已经困扰了我很长时间。
我希望有一个人可以帮助我。非常感谢你!