我在Onlineshop上工作的是什么使用名为 thickbox 的插件
现在,厚箱看起来已经很老了,但它在商店里使用,我真的不想在那里改变很多。实际上是它的运行。
现在,如果客户点击图片进行缩放,则会打开一些像灯箱一样。
<div id="TB_overlay" class="TB_overlayBG"></div>
<div id="TB_window" style="margin-left: -335px; width: 670px; margin-top: -350px; display: block;">
<a href="" id="TB_ImageOff" title="Close">
<img id="TB_Image" src="images/product_images/popup_images/TJ3000-1.jpg" width="640" height="640">
</a>
<div id="TB_caption">FooBar<div id="TB_secondLine">Image 1 / 1</div>
</div>
<div id="TB_closeWindow">
<a href="#" id="TB_closeWindowButton" title="Close">X</a>
</div>
如果再次点击它,那么thickbox会调用一个真正有意义的函数tb_remove
!
function tb_remove() {
$("#TB_imageOff").unbind("click");
$("#TB_closeWindowButton").unbind("click");
$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger('unload').unbind().remove();});
$("#TB_load").remove();
if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
$("body","html").css({height: "auto", width: "auto"});
$("html").css("overflow","");
}
document.onkeydown = "";
document.onkeyup = "";
return false;
}
但叠加层不会关闭!
Uncaught TypeError: Cannot read property 'add' of null //jquery-ui.js:84
如果我从
中删除.trigger('unload')
$('#TB_window,#TB_overlay,#TB_HideSelect').trigger('unload').unbind().remove();
似乎比起作用。
trigger('unload')
在这种情况下做了什么?
这真的是neede吗?
我的想法是,如果一个项目被移除,它无论如何都没关系,因为它实际上被删除了。
还是我错了?!?!?
编辑
这是我发现的唯一卸载处理程序..我想我永远不会在那里结束,因为始终给出了图像名称。
if(urlType == '.jpg' || urlType == '.jpeg' )
{
//code to show images
//source that actually shows the lightbox
}
else
{
//code to show html
//some source
$("#TB_window").unload(function () {
$('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
});
}
答案 0 :(得分:1)
trigger('unload')
在这种情况下做了什么?
trigger
为这些元素上的unload
事件调用任何jQuery注册的处理程序,然后尝试触发这些元素上的本机unload
事件以触发任何本机(非jQuery)处理程序。
除非你(或那个插件)的代码在某个地方挂钩unload
,否则你可以删除它。但基于导致问题的原因,我的猜测是插件因某种原因挂钩了那个事件,以及事情失败的地方......