2008-10-24 38 views
6

tôi có mã này để cung cấp cho tôi một rollover trên trình nút, và tôi đang cố gắng để làm cho nó chung chung hơn:Tìm và thay thế jquery

$('.rollover').hover(
      function(){ // Change the input image's source when we "roll on" 
       srcPath = $(this).attr("src"); 
          srcPathOver = ??????? 
       /*need to manipulate srcPath to change from 
       img/content/go-button.gif 
       into 
       img/content/go-button-over.gif 
       */ 
       $(this).attr({ src : srcPathOver}); 
      }, 
      function(){ // Change the input image's source back to the default on "roll off" 
       $(this).attr({ src : srcPath}); 
      } 
    ); 

Hai điều thực sự,

Tôi muốn học cách thao tác biến số srcPath để nối văn bản '-over' vào tên tệp gif, để đưa ra một hình ảnh mới cho rollover. Bất cứ ai có thể đề xuất một cách để làm điều này?

Ngoài ra, ai đó có thể cho tôi biết liệu mã này có thể được tinh chỉnh không? Tôi là một chút mới để jQuery và tự hỏi nếu cú ​​pháp có thể được cải thiện khi.

Rất cám ơn.

Trả lời

13
$('.rollover').hover(
      function(){ // Change the input image's source when we "roll on" 
       var t = $(this); 
       t.attr('src',t.attr('src').replace(/([^.]*)\.(.*)/, "$1-over.$2")); 
      }, 
      function(){ 
       var t= $(this); 
       t.attr('src',t.attr('src').replace('-over','')); 
      } 
    ); 
+0

Đừng quên var, như trong var t = ... –

+0

chỉnh sửa: thx ... đã thêm var – jcampbell1

2

Bạn sẽ có thể sử dụng regex thay thế để sửa đổi đường dẫn nguồn của mình. Như thế này:

srcPathOver = srcPath.replace(/([^.]*)\.(.*)/, "$1-over.$2"); 

Thông tin thêm về Javascript regexes here

Theo như cách bạn đang làm nó, tôi muốn chắc chắn rằng bạn xác định biến srcPath bạn như thế này

var srcPath; 
$('.rollover').hover(... 

Các mã bạn có ở trên làm cho nó trông giống như srcPath là một biến toàn cầu, mà không phải là những gì bạn muốn.

6

Để thao tác tên tập tin và thêm "-Hơn" bạn chỉ cần phải làm một số thao tác chuỗi Javascript, như thế này:

function appendOver(srcPath){ 
    var index = s.indexOf('.'); 

    var before = s.substr(0, index); 
    var after = s.substr(index); 

    return before + "-over" + after; 
} 

này sẽ trả về tên tập tin gốc (trong tất cả các định dạng có thể) và thêm chuỗi '-over' ngay trước dấu chấm mở rộng.