Jquery 使用AJAX放置时Thickbox不起作用

Jquery 使用AJAX放置时Thickbox不起作用,jquery,ajax,image,load,thickbox,Jquery,Ajax,Image,Load,Thickbox,首先让我说,我自学了脚本,所以我的方法可能有点奇怪 我想使用AJAX将图像调用到div中,但是要使用thickbox标记,这样当单击图像拇指时,就会使用thickbox(jQuery)显示大图像 以下是示例页面: 好的,请点击“照片”菜单,然后打开左侧菜单中的一幅图片,例如“黄昏”。黄昏图像将放置在主框中。 现在,我想在单击图像时使用Thickbox打开它。但它不起作用,它只是在同一个窗口中打开图像 但是,如果我只向test2.php添加一个图像,则Thickbox工作正常,如下所示: <

首先让我说,我自学了脚本,所以我的方法可能有点奇怪

我想使用AJAX将图像调用到div中,但是要使用thickbox标记,这样当单击图像拇指时,就会使用thickbox(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>
好的,现在在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;
{
$imgecho=(“”);
}
echo(“

”.$row['title'.

”.$imgecho.”);打破
我当然只把它精简到重要的部分。php文件工作正常,但thickbox所需的应用标记都不起作用。 我甚至添加了Thickbox网站上建议的
?height=300&width=300modal=true
,但它不起作用。 我无法向自己解释,它已经困扰我很长时间了


我希望有人能帮助我。多谢各位

与大多数Lightbox克隆一样,Thickbox在主文档的
load
上初始化。它查找具有所需类的所有
元素,并向它们添加必要的事件。以后引入文档的元素不会自动转换为thickbox链接


每次引入新元素或了解如何初始化特定元素时,都必须运行Thickbox初始化命令。

设置内容后,需要手动调用
tb_init
方法,例如,在设置
\videomenue
innerHTML
后,调用此方法:

tb_init('#videomenue a.thickbox');
#post
呼叫后:

tb_init('#post a.thickbox');
另外:您已经在使用jQuery,因此正在经历大量不必要的麻烦。例如,这里使用jQuery快速重写了您发布的所有代码。如果您已经决定使用jQuery,请尝试使用尽可能多的jQuery来清理您的代码(作为一般做法):


非常感谢你提供的信息。我不知道!哇!非常感谢你!它工作(经过一个小的修正)!如果需要,您可以在同一目录的test3.php页面上看到它!我知道jQuery可以做我需要的事情,我只是不知道如何用它解决AJAX问题,所以我保留了我的旧AJAX代码来获取数据。我现在将尝试理解您的代码。谢谢@Pekka当Thickbox调用它自己的init时,它会调用
tb\u init('a.Thickbox,area.Thickbox,input.Thickbox')
,这会告诉它在哪里查找。通过再次调用它,并将搜索范围限定到刚刚完全替换其
html
的元素,应该不会有任何问题。@我很高兴能提供帮助,祝您的项目好运@佩卡。是的,thickbox似乎就是这么做的。您可以在JS文件的顶部看到它:现在thickbox正在工作,我将尝试更改我站点的照片部分,使其在主框中同时显示所有照片,这样我就不需要左菜单了。(拍脑袋)它在init中确定了它的范围。对不起,我完全忽略了这一点。我将删除我的评论。
tb_init('#post a.thickbox');
function sndReq(req){
  var req2 = req,
  katcheck = req.slice(0, 1);

  var handleResponse = function(data){
    if(data){
      if(katcheck == "k"){
        $("#videomenue")
          .html( data )
          .animate({"top": "0px", "left": "0px"},{ queue:true, duration:1}).show(500);
        tb_init('#videomenue a.thickbox');
        $('#videoleft').css('float', 'right');
      } else {
        $("#post").html( data );
        tb_init('#post a.thickbox');
        if(startcheck == true){ 
          startcheck = false;
        } else {
          $('#videoleft').show().animate({"top": "0px", "left":"0px"},{ queue:true, duration:800,  easing: 'easeOutBack'});
        }
      }
    }
  }

  if( katcheck == "k" ){
    var katid = req2.slice(3,4);
    $.get('getwork.php', { kat: katid }, handleResponse );
  } else {
    var param = req;
    if( startcheck == true ){
      $.get('getwork.php', { id: param }, handleResponse );
    } else {
      $('#videoleft')
        .animate( {"left": "-800px"}, 600, 'easeInQuad',
            function(){ $.get('getwork.php', { id: param }, handleResponse ); })
        .animate( {"top": "0px", "left": "800px"}, {queue:true, duration:1},
            function(){ $(this).hide(); });
    }
  }
}