2012-01-10 65 views
13

Hãy nói tôi có:Cách lấy tên hình ảnh bằng jQuery?

<img src='static/images/banner/blue.jpg' /> 

Sử dụng jQuery, làm thế nào tôi có thể lấy dữ liệu blue?

Nếu tôi sử dụng $('img').attr('src'), tôi có thể nhận toàn bộ URI. Trong trường hợp đó, cách tốt nhất để loại bỏ phần mở rộng và tất cả các đường dẫn là gì?

Trả lời

22

Có một vài tệp tin cục bộ ở đây có thể sử dụng dấu gạch chéo ('\') khác trong tên đường dẫn, và một số tên tệp có thể có băm hoặc đuôi tìm kiếm được xác định hoặc không có phần mở rộng.

String.prototype.filename=function(extension){ 
    var s= this.replace(/\\/g, '/'); 
    s= s.substring(s.lastIndexOf('/')+ 1); 
    return extension? s.replace(/[?#].+$/, ''): s.split('.')[0]; 
} 

console.log($('img').attr('src').filename()); 
9

Regex sẽ là người bạn thân nhất của bạn ở đây ...

var filename = fullUri.replace(/^.*?([^\/]+)\..+?$/, '$1');

+0

@ RokoC.Buljan nhờ, cố định hiện nay. – KOGI

+0

Bây giờ nó là hoàn hảo, bạn chỉ cần quên để thoát khỏi '/', nên được '(/^.*?([^\/]+)\..+?$/, '$ 1'); ' –

6
var src = $('img').attr('src').split('/'); 
var file = src[src.length - 1]; 

nên làm việc

+2

bạn quên rõ ràng thoát khỏi phần mở rộng ... –

1
var src= $('img').attr('src'); 

var name = src.match(/static\/images\/banner\/(.*)\.jpg/)[1]; 
7

Chỉ cần chia chuỗi:

var src = $('img').attr('src'); // "static/images/banner/blue.jpg" 
var tarr = src.split('/');  // ["static","images","banner","blue.jpg"] 
var file = tarr[tarr.length-1]; // "blue.jpg" 
var data = file.split('.')[0]; // "blue" 
+1

Chỉ cần một phần phụ mà ví dụ này sẽ trả về ví dụ: 'summer' từ một hình ảnh có tên là 'summer.2013.jpg' –

2
src = $('img').attr('src'); 
src_array = src.split('/'); 
src = src_array[src.length-1]; 
3

Giả sử chúng ta có:

<img src="path/to/awesome/image/foobar.jpg" /> 

Dưới đây là những gì chúng ta làm gì để trích xuất các tên file:

Array.prototype.filename = function() { 
    var tmp = this.split('/'); 
    return tmp[tmp.length-1].match(/(.*)\.[\w]+$/)[1]; 
}); 

$('img').attr('src').filename(); 

Kết quả:

console.log(name); // foobar 
+0

** Tôi sẽ không đề xuất rằng một **: những gì trong trường hợp 'summer.2013.jpg' ?? tên tệp không phải là 'summer' nhưng' summer.2013' –

+0

@ RokoC.Buljan Câu hỏi cũ, tuy nhiên, đã được cập nhật! – daryl

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