一、揭开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>

这样就行了!

Trackback

no comment untill now

Add your comment now

Please wrap all source codes with [code][/code] tags.