我正在學習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