отзывчивый новостной тикер со списком ссылок - PullRequest
0 голосов
/ 26 сентября 2018

пожалуйста, посмотрите этот плагин

inewsticker

он работает нормально, но показывает только текст, а не ссылки. У меня есть список, как показано ниже

<ul class="typing">
<li><a href="http://test1.com">this is news 1</a></li>
<li><a href="http://test2.com">this is news 2</a></li>
<li><a href="http://test3.com">this is news 3</a></li>
</ul>

Я хочу показать ссылки с эффектом набора текста, но он показывает только текст (не ссылки)

это код плагина

if (t.effect == "typing") {
            var s = 0;
            var o = 0;
            var u = t.delay_after / t.speed;
            var a = (new Array(1 + u)).join(" ");
            var f = new Array;
            i.each(function() {
                f.push(e(this).text() + a)
            });
            count = f.length;
            setInterval(function() {
                result = f[o].substring(0, s);
                e(r).html(result);
                s++;
                if (s == f[o].length) {
                    s = 0;
                    r.appendTo(r).hide().fadeIn("slow");
                    o++;
                    if (count == o) {
                        o = 0
                    }
                }
            }, t.speed)
        }
    }
})(jQuery)

Я пытался изменить это

f.push(e(this).text() + a)

к этому

f.push(e(this).html() + a)

теперь он кликабелен, но не работает должным образом, как предыдущий

помогите, пожалуйста!

1 Ответ

0 голосов
/ 26 сентября 2018

Поскольку то, что вы пытаетесь сделать, довольно индивидуально, я бы предложил написать свой собственный код, а не пытаться модифицировать inewsticker, чтобы сделать что-то, для чего он не предназначен.

Вот моя рабочая попытка иответ:

$(function() {
    $.fn.typeLinks = function() {
        var typeSpeed = 50,
            delay = 2000,
            $this = $(this),
            $children = $this.children(),
            texts = $children.map(function() {
                return $(this).text();
            }).get();
        var i = 0,
            s = 0;
        var step = function() {
            var $current = $children.eq(i),
                $a = $current.find('a:first');
            $children.hide();
            $current.show();
            $a.text(texts[i].substr(0, s));
            if (s == texts[i].length) {
                s = 0;
                if (i == $children.length - 1) {
                    i = 0;
                }else{
                    i++;
                }
                setTimeout(step, delay);
            } else {
                setTimeout(step, typeSpeed);
            }
            s++;
        };
        step();
    };
    $('.typing').typeLinks();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="typing">
<li><a href="http://test1.com">this is news 1</a></li>
<li><a href="http://test2.com">this is news 2</a></li>
<li><a href="http://test3.com">this is news 3</a></li>
</ul>
...