jQuery Ticker | Разрешить HTML?

Я написал небольшой плагин тикера jQuery из того, что нашел в Интернете. Он отлично справляется со своей задачей, но я хочу, чтобы он разрешал HTML-теги, и я застрял с ним, так как я не могу правильно писать HTML-теги. Он просто записывает их, и ничего больше, поэтому я не могу создавать разрывы строк или строгий текст.

Вот код:

(function($) {
    $.fn.Ticker = function(cont,time) {
        var conArray = cont.split(""),
            current = 0,
            elem = this;
        setInterval(function() {
            if(current < conArray.length) {
                elem.html(elem.html() + conArray[current++]);
            }
        }, time);
    };

})(jQuery);
var tickertext = $("#tickertext").html();
$(document).ready(function(){
    $("#tickto").Ticker(tickertext,50);
});

И немного об этом: http://jsfiddle.net/29axW/ Если я console.log(conArray) такую ​​ссылку <a href="kissa.php">moi</a> я получил

["<", "a", " ", "h", "r", "e", "f", "=", """, "k", "i", "s", "s", "a", ".", "p", "h", "p", """, ">", "m", "o", "i", "<", "/", "a", ">"] 

Но он просто пишет как открытый текст. Поэтому мне нужно сначала проанализировать теги html и вставить их, чтобы пользователь этого не увидел, и так далее ...


person Community    schedule 05.03.2013    source источник
comment
Возможный дубликат: stackoverflow.com/questions/14714162/   -  person yckart    schedule 05.03.2013


Ответы (3)


Вы можете пропустить интервал, если достигнут HTML-тег ... Посмотрите, как я это понял здесь: https://github.com/yckart/jquery.typer.js/blob/master/jquery.typer.js#L34-L38

Вот рабочий пример.

person yckart    schedule 05.03.2013
comment
Хм ... Ваш скрипт допускает такие опции, как $(element).typer(speed)? - person ; 05.03.2013
comment
@christian Конечно, используйте $ (element) .typer ({duration: 2000}); - person yckart; 05.03.2013
comment
Но это продолжительность всего набора или пауза между буквами? - person ; 05.03.2013
comment
Забудьте об этом последнем комментарии. Итак, продолжительность - это продолжительность слова. Как установить интервал 10 мс между каждой буквой? - person ; 05.03.2013
comment
@christian пока что невозможно. Меня нет дома, дайте мне 30 мин. - person yckart; 05.03.2013
comment
@christian Было бы здорово, если вы создадите пулреквест на GitHub, если он у вас есть :) - person yckart; 05.03.2013
comment
Я кое-что придумал и отправил вам, имейте в виду, что это очень сырая версия. - person ; 05.03.2013
comment
Поскольку я задаю delaychar длительность 1000 мс, для запуска требуется много времени. Однако, когда он запускается, новый персонаж появляется каждую секунду, так что он работает, но требует улучшения. Если это 100 мс или меньше, это прекрасно! :) - person ; 05.03.2013
comment
Отличный плагин @yckart - именно то, что я искал, есть ли способ запустить его всего несколько раз, а затем перестать повторять? - person Simon; 24.03.2013
comment
@Simon К сожалению, еще нет ... Наберитесь терпения, я скоро выложу обновленную новую версию. - person yckart; 24.03.2013
comment
отличный звук @yckart! Спасибо :) - person Simon; 24.03.2013
comment
@Simon Хорошо, обновление вышло! Я приготовил для вас скрипку jsfiddle.net/Sex3a Я использую переменную i и считаю ее после всех фраз набираются из-за afterAll. Если i === 3, таймер очищается. - person yckart; 24.03.2013

Это потому, что браузер получает один символ тега за раз, поэтому не отображает его как тег. Возможно, вам потребуется разделить строку на теги и текст, а затем разбить текст на отдельные символы.

Я постараюсь придумать простой способ сделать это.

person James Coyle    schedule 05.03.2013
comment
Мда, интересно! Таким образом, текст должен быть сначала проанализирован на наличие тегов, а затем на наличие текста. - person ; 05.03.2013
comment
да. Вы должны относиться к любому HTML так, как если бы он принадлежит непосредственно внутри него символу, а не как самостоятельный символ. Еще больше усложняет ситуацию то, что вам нужно будет написать закрывающий тег, как только вы напишете открывающий тег, затем заполните внутренний HTML-код и двигайтесь дальше. - person Chris Baker; 05.03.2013
comment
@Chris Хотя звучит непросто. Даже Google подвел меня в этом :( - person ; 05.03.2013

Тег HTML должен быть заполнен, прежде чем отправлять его в браузер. В противном случае это похоже на строку.

Я думал о решении. Вы должны работать с html-деревом, находить вложенные html-теги и добавлять в них текст. Есть моя Fiddle, расширяющая вашу. Прошу прощения за беспорядок, этот код следует обновить, но я показываю основную идею.

Он работает с вложенными тегами (например, <strong><i>text</i></strong>) и тегами, не закрываясь, как <br/>.

Скажите, если вам нужно дополнительное объяснение.

person Kasyx    schedule 05.03.2013