我正在学习jQuery,并将其作为一个实验,试图将隐藏/显示切换效果与Jason Frame的打字机效果(http://onehackoranother.com/projects/jquery/jquery-grab-bag/text-effects.html)结合使用。切换Jquery打字机效果
页面上有链接,点击时会显示一个隐藏,并触发类型效果。
这里是jQuery代码:
function toggleMe(a){
var e=document.getElementById(a);
if(!e)return true;
if(e.style.display=="none"){
e.style.display="inline-block"
}
else{
e.style.display="none"
}
return true;
}
(function($) {
$.fn.typewriter = function() {
this.each(function() {
var $ele = $(this), str = $ele.text(), progress = 0;
$ele.text('');
var timer = setInterval(function() {
$ele.text(str.substring(0, progress++) + (progress & 1 ? '| ' : ''));
if (progress >= str.length) clearInterval(timer);
}, 100);
});
return this;
};
})(jQuery);
D键的HTML:
<p><a href="#" onclick="toggleMe('typewriter1'); $('#typewriter1').typewriter();">Lorem ipsum dolor sit amet</a><span id="typewriter1" style='display:none'>, consectetur adipiscing elit</span>.
<a href="#" onclick="toggleMe('typewriter2'); $('#typewriter2').typewriter();">Pellentesque ut facilisis nulla.</a>
<span id="typewriter2" style='display:none'>Mauris ultricies <a href="#" onclick="toggleMe('typewriter3'); $('#typewriter3').typewriter();">suscipit</a> <span id="typewriter3" style='display:none'>dolor</span> in ultrices.</span></p>
显然有几件事错了,我真的不能明白为什么。值得注意的是: 1)不显示嵌套链接(打字机3)。看起来,HTML在一个隐藏的打字机范围内被剥离。
2)跨度字符串的最后一个字符经常被忽略。
有关改进此代码的任何建议吗?
谢谢!
这个插件是不是设计有*嵌套工作*跨度,因为它的工作原理是替换文字内容。任何子DOM元素都被忽略。你需要完全重写它,以允许递归再生所有可见的后代。 – 2015-02-06 15:31:08
完整重写,完整递归,如下。我有一些想法可以让这个概念更进一步,所以非常感谢。享受:) – 2015-02-06 17:15:08