Измените текст (html) на .animate

Я пытаюсь анимировать html-часть тега (<font id="test" size="7">This Text!</font>) с помощью функции jQuery Animate, например:

$("#test").delay(1500).animate({text:'The text has now changed!'},500);

Однако ничего не происходит, он не меняет текст.

Как я могу это сделать? Спасибо!

Ответ 1

Функция animate(..):

.animate( properties, options );

И он говорит следующее о параметре properties:

свойства Карта свойств CSS, которая анимация будет двигаться в направлении.

text не является свойством CSS, поэтому функция работает не так, как вы ожидали.

Вы хотите вытереть текст? Вы хотите переместить его? Я мог бы предоставить альтернативу.

Посмотрите следующую скрипту.

Ответ 2

Я искал что-то вроде этого несколько дней назад, но, поскольку у меня не было много времени, я в конечном итоге использовал более легкий fadeIn/fadeOut, как и другие.

Но идея анимации текста не оставила меня в голове, и далее я закодировал свой собственный плагин (с именем jquery-bubble-text).

Вы можете проверить его на github или увидеть это jsfiddle.

Синтаксис следующий:

bubbleText({
    element: $element,      // must be one DOM leaf node
    newText: 'new Text',    // must be one string
});

Надеюсь, вам понравится:)

Ответ 3

Следуя предложению JiminP....

Я сделал jsFiddle, который будет "плавно" переходить между двумя пролетами, если кто-то заинтересован в том, чтобы видеть это в действии. У вас есть два основных варианта:

  • один диапазон исчезает в то же время, что и, другой диапазон затухает в
  • один диапазон исчезает , за которым следует другой затухающий пробел.

При первом нажатии кнопки появится номер 1 выше. Во второй раз, когда вы нажмете кнопку, появится номер 2. (Я сделал это, чтобы вы могли визуально сравнить два эффекта.)

Попробуйте: http://jsfiddle.net/jWcLz/594/

Подробнее:

Номер 1 выше (более сложный эффект) достигается путем позиционирования пролетов непосредственно друг над другом с помощью CSS с абсолютным позиционированием. Кроме того, аниматоры jQuery не соединены вместе, так что они могут выполняться одновременно.

HTML

<div class="onTopOfEachOther">
    <span id='a'>Hello</span>
    <span id='b' style="display: none;">Goodbye</span>
</div>

<br />
<br />

<input type="button" id="btnTest" value="Run Test" />

CSS

.onTopOfEachOther {
    position: relative;
}
.onTopOfEachOther span {
    position: absolute;
    top: 0px;
    left: 0px;
}

JavaScript

$('#btnTest').click(function() {        
    fadeSwitchElements('a', 'b');    
}); 

function fadeSwitchElements(id1, id2)
{
    var element1 = $('#' + id1);
    var element2 = $('#' + id2);

    if(element1.is(':visible'))
    {
        element1.fadeToggle(500);
        element2.fadeToggle(500);
    }
    else
    {
         element2.fadeToggle(500, function() {
            element1.fadeToggle(500);
        });   
    }    
}

Ответ 4

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

Пример:

$("#test").html('The text has now changed!');
$("#test").animate({left: '100px', top: '100px'},500);

Посмотрите эту скрипту для полного примера:

http://jsfiddle.net/Twig/3krLh/1/

Ответ 5

$("#test").hide(100, function() {
    $(this).html("......").show(100);
});

Ответ 6

обратитесь к официальный пример jquery: и играйте с ним.

.animate({
    width: "70%",
    opacity: 0.4,
    marginLeft: "0.6in",
    fontSize: "3em",
    borderWidth: "10px"
  }, 1500 );