⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery.jticker.js

📁 jQuery即学即用
💻 JS
字号:
// jquery.ticker.js// 0.9.1 - beta// Stephen Band//// Project and documentation site:// http://webdev.stephband.info/jticker///// Dependencies:// jQuery 1.2.3 - (www.jquery.com)//// Instantiate and play with:// jQuery(element).ticker({options}).trigger("play");(function(jQuery) {// VARvar name = "ticker";   // Name of the plugin// FUNCTIONSfunction indexify(i, length) {    return (i >= length) ? indexify(i-length, length) : ((i < 0) ? indexify(i+length, length) : i) ;}function advanceItem(elem) {    var data = elem.data(name);    var length;    for (var i=0; i<200; i++) {        if (!data.content[i]) {length = i; break;}     }    data.nextItem      = indexify((data.nextItem || 0), length);    data.currentItem   = data.nextItem;    data.elemIndex     = [data.currentItem];    data.charIndex     = 0;    data.nextItem++;}function makeFamily(elem) {    var obj = {elem: elem.clone().empty()};    var children = elem.children();    if (children.length) {        children.each(function(i){            obj[i] = makeFamily(jQuery(this));        });        return obj;    }    else {        obj.text = elem.text()        return obj;    }}function checkFamily(content, index) {    var newIndex;    if (content[index[0]]) {        if (content[index[0]].text) {return content[index[0]];}        else if (index.length == 1) {return true;}        else {            newIndex = jQuery.makeArray(index);            return checkFamily(content[newIndex[0]], newIndex.splice(1, newIndex.length));        }    }    else {return false;}}  function incrementIndex(index) {    if (index.length > 1)   {index[index.length-1]++;                             return index;}    else                    {return false;}}function buildIndex(content, index) {    if (index === false)    {return false;}    var obj = checkFamily(content, index);    if (obj === false)      {return buildIndex(content, incrementIndex(index.slice(0, index.length-1)));}    else if (obj === true)  {index[index.length] = 0;                             return buildIndex(content, index);}    else                    {return index;}}function buildFamily(elem, content, index, data) {    var newIndex, newElem;    var child = elem.children().eq(index[0]);        if (!index.length) {        return {            readout: elem,            text: content.text        };    }    else if (child.length)  {newElem = child;}    else                    {newElem = content[index[0]].elem.appendTo(elem);}        newIndex = jQuery.makeArray(index).slice(1, index.length);    return buildFamily(newElem, content[index[0]], newIndex, data);}function initElem(elem) {    var data = elem.data(name);    jQuery("*", elem).empty();    elem.empty();    data.start = 0;    data.sum = 0;    if (data.cursorIndex) {cursorIndex = 0;}}function initChild(elem) {    var data = elem.data(name);    data.start = data.sum;}function ticker(elem, threadIndex, data) {    var index, letter;        // Switch cursor    if (data.cursorIndex !== false)  {data.cursorIndex = indexify(data.cursorIndex+1, data.cursorList.length);                                      data.cursor.html(data.cursorList[data.cursorIndex]);}    else                             {data.cursor.html(data.cursorList);}    // Add character to readout    index = data.charIndex - data.start;    letter = data.text.charAt(index-1);    data.cursor.before(letter);        if (data.charIndex >= data.sum) {        data.cursor.remove();        data.elemIndex = incrementIndex(data.elemIndex);        return tape(elem, threadIndex);    }    else {        return setTimeout(function(){            if (data.eventIndex == threadIndex) {                data.charIndex++;                ticker(elem, threadIndex, data);            }            threadIndex = null;        }, data.rate);       }}function tape(elem, threadIndex) {    var data = elem.data(name);    if (data.eventIndex == threadIndex) {                data.elemIndex = buildIndex(data.content, data.elemIndex);        //console.log('INDEX '+data.elemIndex);                if (data.elemIndex === false) {            return setTimeout(function(){                if (data.running && (data.eventIndex == threadIndex)) {                    advanceItem(elem);                    return tape(elem, threadIndex);                }                threadIndex = null;            }, data.delay);        }        else if (!data.charIndex)                       {initElem(elem);}        else                                            {initChild(elem);}        jQuery.extend(data, buildFamily(elem, data.content, data.elemIndex));        data.sum = data.sum + data.text.length;        data.readout.append(data.cursor);        return ticker(elem, threadIndex, data);    }}// PLUGIN DEFINITIONjQuery.fn[name] = function(options) {    // Add or overwrite options onto defaults    var o = jQuery.extend({}, jQuery.fn.ticker.defaults, options);    // Iterate matched elements    return this.each(function() {        var elem = jQuery(this);                elem        .data(name, {            rate:           o.rate,            delay:          o.delay,            content:        makeFamily(elem),            cursor:         o.cursor,            cursorList:     o.cursorList,            cursorIndex:    (typeof(o.cursorList) == "object") ? 0 : false,            nextItem:       0,            eventIndex:     0        })        .bind("stop", function(e){            var data = elem.data(name);            data.running = false;                   })        .bind("play", function(e){            var data = elem.data(name);            data.eventIndex++;            data.running = true;            data.nextItem = (e.item || data.nextItem);            advanceItem(elem);            tape(elem, data.eventIndex);        })        .bind("control", function(e){            var data = elem.data(name);            jQuery().extend(data, {                nextItem:   e.item,                rate:       e.rate,                delay:      e.delay            });        })        .children()        .remove();    });};// PLUGIN DEFAULTSjQuery.fn[name].defaults = {    rate:           40,         // Speed to print message.    delay:          2000,       // Pause to read message.    cursorList:     "_",        // A string or an array of strings or jQuery objects. If an array, the cursor loops through the array.    cursor:         jQuery('<span class="cursor" />')}})(jQuery);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -