2012-05-22 30 views
8

Với jQuery, tôi đang cố gắng thay thế văn bản, bao gồm cả khoảng, bên trong các liên kết này khi di chuột. Sau đó, khi người dùng di chuột ra, văn bản gốc được hiển thị lại.jQuery thay thế văn bản của phần tử trên di chuột

<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> 

Kết quả cuối cùng nên

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

tôi toying xung quanh với nhưng không chắc chắn làm thế nào để thay thế nó trở lại. Ý tưởng nào?

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

này sẽ dễ dàng hơn nhiều nếu * tất cả * các nội dung phải được thay thế là bên trong một số yếu tố. – Jon

+0

Bạn có cần nó được thực hiện với jQuery hay là văn bản tĩnh? – Paul

+0

http://api.jquery.com/mouseover/#example-0 sẽ hiển thị cho bạn –

Trả lời

21
$('.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')); 
    } 
); 

bạn có thể lưu các văn bản gốc trong một thuộc tính data-initialText lưu trữ trong các nút tự như vậy để tránh các biến

+1

bạn đã đăng 43 giây trước tôi, nhưng điều thú vị là, Internet của tôi bị hỏng trong một giây khi tôi nhấp vào gửi và tôi đã để nhập hình ảnh xác thực khi tôi gửi nó –

+0

+1 cho dữ liệu ban đầu –

+0

Cá nhân, điều này thay thế nó, nhưng sau đó khi con chuột đi ra ngoài, nó vẫn giữ văn bản mới! – Dikeneko

4

này nên làm các trick

$(function(){ 
    var prev;  

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

Bạn' d cần phải lưu nó trong một biến để đặt nó trở lại với những gì nó đã được, hãy thử:

var text; 

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

thêm chức năng khác với sự kiện di chuột như thế này:

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

Link cho bản demo

+0

wow bây giờ tôi nhận ra làm thế nào chậm tôi ... và một liên kết jsfiddle là một ý tưởng tồi ở đây: '( – optimusprime619

Các vấn đề liên quan