2012-01-10 219 views
13

让我们说我有:如何使用jQuery获取图像名称?

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

使用jQuery,我怎么能拿blue数据?

如果我使用$('img').attr('src'),我可以得到整个URI。在这种情况下,删除扩展和所有路径的最佳方法是什么?

回答

22

这里有几个问题 - 本地文件可能会在路径名中使用其他斜杠('\'),而某些文件名可能会定义散列或搜索尾,或者没有扩展名。

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

正则表达式将是你最好的朋友在这里......

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

+0

@ RokoC.Buljan感谢,固定现在。 – KOGI 2013-10-02 22:36:40

+0

现在它完美了,你只是忘了逃避'/',应该是'(/^.*?([^\]]+)\..+?$/,'$ 1');' – 2013-10-02 22:40:42

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

应工作

+2

你明显忘记了摆脱扩展名... – 2013-10-02 22:26:37

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

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

就分割字符串:

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

只是一个旁注,这个例子将返回例如:'夏季'从一个叫'summer.2013.jpg'的图像 – 2013-10-02 22:24:26

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

说我们有:

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

这就是我们要做的提取文件名:

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

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

结果:

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

**我不会建议那个**:在什么情况下'summer.2013.jpg' ??文件名不是'summer',而是'summer.2013' – 2013-10-02 22:22:28

+0

@ RokoC.Buljan但是,旧的问题已更新! – daryl 2013-10-03 15:06:03