一、揭开thickbox神秘的面纱
thickbox是一个不错的对话框插件,不过官方站提供的使用方法具限性很大。比如,我在页面有个链接弹出内嵌的tb窗口,则我们需要给这个链接加上固定的CLASS和href属性或者alt值,看上去很神秘,代码如下:
<a href="#TB_inline?width=480&inlineId=hiddenFriend&modal=true" class="thickbox" >...</a>
这种方法在做静态页面时是很不错,但是如果需要点击这个链接后提交一些数据,提交成功后再弹出这样的提示窗口,这种写法就无法实现了。
其实仔细分析TB里面的JS源码,不难发现,他真正调用的只是tb_show这个函数,在这之前tb会用tb_init()函数获取页面上CLASS值为”thickbox”的元素。源代码如下:
tb_init():
<br/>//on page load call tb_init<br/>$(document).ready(function(){ <br/> tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox<br/> imgLoader = new Image();// preload image<br/> imgLoader.src = tb_pathToImage;<br/>});<br/><br/>//add thickbox to href & area elements that have a class of .thickbox<br/>function tb_init(domChunk){<br/> $(domChunk).click(function(){<br/> var t = this.title || this.name || null;<br/> var a = this.href || this.alt;<br/> var g = this.rel || false;<br/> tb_show(t,a,g);<br/> this.blur();<br/> return false;<br/> });<br/>}<br/>[/CODE]<br/><br/><b>tb_show()函数:</b><br/>
<br/>function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link<br/>.....<br/>}<br/>
真正实现弹窗效果的是tb_show(),而thickbox这个class只不过是提交时给tb_init()的一个对象判断。我们完全可以跳过这一步,直接调用tb_show(),SO,把需要使用TB窗口的链接写成:
<a href="javascript:tb_show('','#TB_inline?width=480&inlineId=hiddenFriend&modal=true',false)">...</a>
调用tb_show函数,把链接参数直接传递进去就行了。首先去掉了多余的class="thickbox",而且这种写法可以解决上面提到的问题,点击链接后先处理数据,再在返回的页面上调用tb_show()以弹出提示窗口。
<a href="处理数据的页面">...</a>
数据处理之后需要调用的代码
<script>
location.href="javascript:tb_show('','#TB_inline?width=480&inlineId=hiddenFriend&modal=true',false)";
</script>
这样就行了!




no comment untill now