最近在网站开发过程中,涉及到thickbox弹出选择商品对话框然后添加到购物清单,并关闭弹出框的功能,因为后台是iframe框架结构,代码如下:
上方是导航nav,左侧是菜单menu,右侧才是操作区域,要实现的弹出thickbox框的操作是在右侧iframe中进行的,首先利用按钮弹出thickbox层,代码如下:
function Search() { //tb_init("search"); tb_show("搜索结果", "/goods/search?width=800&telOrder=1&keyType=" + $("#keyType").val() + "&keywords=" + encodeURI($("#keywords").val()), null); }
然后search.aspx页面中选中checkbox的click事件,异步提交商品信息到后台保存,然后关闭当前层,代码如下:
function AddToOrder(id) { if($("#"+id).attr("checked")) { //alert($("#" + id).attr("checked")); $.post("/order/addtoorder", { goodsId: id }, function(data) { //alert(data); parent.tb_remove(); //注意这里是错误的,因为iframe的原因parent获取的是整个窗口,而不是当前的iframe中的页面 }, "json"); } }
注意:parent.tb_remove();这句是不能关闭当前窗口的,因为当前页面是在iframe中,parent获取的是整个窗口,需要再调用右侧iframe才是真正的thickbox的parent页面
改成如下代码,可以成功关闭thickbox:
parent.frames[2].tb_remove();