Jquery 加载新图像后Lightbox不工作

Jquery 加载新图像后Lightbox不工作,jquery,image,lightbox,Jquery,Image,Lightbox,初始化灯箱: <script type="text/javascript" src="<?=SITE_TEMPLATE_PATH?>/js/slimbox2.js"></script> 链接类型与上面相同,但带有链接的lightbox不再工作。我想这是因为本来就没有他们在页面上。如何解决此问题?主题中有多篇帖子 答案很简单 更改为: $("selector").live('click', function (){ $(this).light

初始化灯箱:

<script type="text/javascript" src="<?=SITE_TEMPLATE_PATH?>/js/slimbox2.js"></script>

链接类型与上面相同,但带有链接的lightbox不再工作。我想这是因为本来就没有他们在页面上。如何解决此问题?

主题中有多篇帖子

答案很简单

更改为:

$("selector").live('click', function (){
      $(this).lightBox();
});
Alt(取决于您使用的Jquery版本1.7+)

您可以使用jquery的live()方法使页面上出现的所有新元素正常工作。 您必须更改当前的lightbox函数以使用live(); 可能的解决办法是:

$("a.itogdetimg").live("click", function(){ $(this).lightbox(); });

对于slimbox2,这应适用于:

$("#knav1").click(function(){
        $("#navldesc").load('/api.php?nvl=y&komplektn=Комплит2',function() {
             $("#navldesc").find("[rel='lightbox']").slimbox(/*if you have custom options place them here*/);
        });
});
正如我最初的评论所提到的,问题在于slimbox2并不关心ajax添加的图像。因此,您需要自己对新添加的图像应用
slimbox


但据我所知,slimbox2有很长一段时间没有更新,因此可能与较新版本的jquery不兼容。我建议你考虑另一种选择。我有一个自己的ui框架,所以我可以就什么库更好给出一个很好的建议。(这些看起来是最新的:)

您提供的代码中缺少初始化lightbox的部分。但问题很可能是因为jquery选择器,如
$(“[rel='lightbox']”)。lightbox()
仅适用于调用选择器时dom中的元素。因此,您需要将lightbox应用于新添加的元素,并成功回调以加载(但如何正确执行取决于您使用的lightbox插件)。
live
从1.7开始就不推荐使用,应该提到这一点。@t.niese更新了更新版本=)但不正确;)相当于
$(“#knav1”).live('click',…
$(document)。on('click','#knav1',…
)但无论如何,我不认为
#knav1
被另一个具有相同id的链接所取代,问题更多的是没有连接灯箱的单击处理程序。fancybox还吸收动态内容
$("selector").on('click', function (){
      $(this).lightBox();
});
$("a.itogdetimg").live("click", function(){ $(this).lightbox(); });
$("#knav1").click(function(){
        $("#navldesc").load('/api.php?nvl=y&komplektn=Комплит2',function() {
             $("#navldesc").find("[rel='lightbox']").slimbox(/*if you have custom options place them here*/);
        });
});