var pos = 0; var timeid; function bridge_f(_dom,text){ clearTimeout(timeid); var d = $(_dom).find("p"); var max = text.length; d.html(text.substring(1, pos)); pos++; if(pos<=max){ timeid = setTimeout(function(){bridge_f(_dom,text);}, 100); } } function show_fun(_dom){ pos=0; $(_dom).parent().parent().hide(); var d =$(_dom).parent().parent().next(); d.show(); bridge_f($(d),$(d).find("p").html()); }
终于把它弄好了,在点击事件触发的时候先是执行show_fun函数,传进去一个dom,是点击节点本身,然后是把本层节点隐藏,把下层节点显示(这个动作是别人原先需要的),然后是执行显示文字的效果,把要显示的节点和要显示的文字都传到方法里面去(原来我只传了以个节点参数,然后用节点参数读取里面的文字,失误啊),然后用setTimeout方法把文字显示出来。注意在setTimeout方法传参的办法要用上。还有要注意的是要把pos参数在show_fun里面置0,否则的话连续执行show_fun函数的话pos永远都是上一个文字的长度。