2010-05-08 29 views
5

Tôi đã hy vọng có được một cú hích tốt theo đúng hướng tôi muốn thay đổi kết thúc chuỗi hình ảnh của tôi ... i hy vọng tôi nói đúng.Làm thế nào để thay đổi chuỗi img src từ kết thúc bằng _m thành _t bằng cách sử dụng jquery cho một tập hợp các hình ảnh

Dù sao hiện tại của src tôi đang đọc:

<img src="something/something/12345_m.jpg" /> 

Tôi muốn thay đổi nó thành:

<img src="something/something/12345_t.jpg" /> 

Bất kỳ chàng trai ý tưởng ... Cảm ơn!

Trả lời

10

một Đây là một chút an toàn hơn:

$('img').each(function() { 
    var src = $(this).attr('src'); 
    $(this).attr('src', src.replace(/_m(\.[^.]+)?$/, '_t$1'); 
}); 

khác bạn có thể có nguy cơ URL như /bat_man/images/oh_my_god_m.png để kết thúc như /bat_tan/images/oh_my_god_m.png khi sử dụng Câu trả lời của eKek0.


Giải thích về regex /_m(\.[^.]+)?$/:

  • /.../ chỉ là biên giới mẫu.
  • _m khớp với chữ cái _m.
  • (...) nhóm đối sánh, kết hợp đầu tiên kết thúc là $1 trong kết quả.
  • \. khớp với chữ .. Bởi vì . là một char đặc biệt trong regex, nó được thoát bởi \.
  • [...] đại diện cho nhóm ký tự.
  • ^. khớp với mọi thứ nhưng chữ .. Bởi vì nó nằm trong một nhóm, nên không cần thoát.
  • + khớp với một hoặc nhiều ký tự.
  • ? nhóm trước là tùy chọn (đối với trường hợp không có phần mở rộng tệp).
  • $ kết quả trùng khớp phải xảy ra ở cuối chuỗi (và do đó không phải ở giữa hoặc hơn).
+0

Bạn đang bỏ lỡ một khung đóng trên attr – thethakuri

0

img.src = "<image source>"; trong đó biến số img được tìm kiếm từ DOM như sau: document.getElementByTagName('img')[0] hoặc điều này: document.getElementById('image') (nếu <img id="image" />), tìm hiểu về HTML DOM để thực hiện.

1
$(img).each(function() { 
    var src = $(this).attr('src'); 
    $(this).attr('src', src.replace("_m", "_t"); 
}); 
+4

gì nếu URL là '/ bat_man/images/oh_my_god_m.png'? – BalusC

1

Không cần jQuery trên một này:

function argsToArray(args) { 
    var r = []; for (var i = 0; i < args.length; i++) 
    r.push(args[i]); 
    return r; 
} 
argsToArray(document.getElementsByTagName('img')).forEach(function(img) { 
    img.src = img.src.split('_m').join('_t'); 
}); 
0

tôi đã không kiểm tra nó, nhưng điều này sẽ làm việc:

$('img').each(function() { 
    var src = $(this).attr('src'); 
    $(this).attr('src', src.replace(/_m\.(png|jpg|jpeg|gif)$/, '_t.$1')); 
}); 
Các vấn đề liên quan