jQuery заменяет текст элемента при наведении

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

<a class="btn" href="#">
    <img src="#" alt=""/>
    <span>Replace me</span> please
</a>

<a class="btn" href="#">
    <img src="#" alt=""/>
    <span>Replace me</span> please
</a>

конечный результат должен быть

<a class="btn" href="#">
    <img src="#" alt=""/>
    I'm replaced!
</a>

Я играю вокруг, но не уверен, как заменить его обратно. Есть идеи?

$('.btn').hover(function(){
    $(this).text("I'm replaced!");
});

5 ответов


$('.btn').hover(
    function() {
        var $this = $(this); // caching $(this)
        $this.data('initialText', $this.text());
        $this.text("I'm replaced!");
    },
    function() {
        var $this = $(this); // caching $(this)
        $this.text($this.data('initialText'));
    }
);

вы можете сохранить исходный текст в data-initialText атрибут, хранящийся в самом узле, чтобы избежать переменных


это должно сделать трюк

$(function(){
  var prev;    

  $('.btn').hover(function(){
  prev = $(this).text();
      $(this).text("I'm replaced!");
  }, function(){
      $(this).text(prev)
  });
})

добавьте еще одну функцию к событию наведения, например:

$('.btn').hover(function(){
    $(this).text("I'm replaced!");
}, function() {
    $(this).text("Replace me please");
});

ссылке демо


$('.btn').hover(function() {
    // store $(this).text() in a variable     
    $(this).text("I'm replaced!");
},
function() {
    // assign it back here
});

вам нужно будет сохранить его в переменной, чтобы вернуть его к тому, чем он был, попробуйте:

var text;

$(".btn").hover(function () {
    text = $(this).text();
    $(this).text("I'm replaced!");
},
function () {
    $(this).text(text);
});