2011-03-02 33 views
0

我想用jQuery获取图像名称及其一些图像的扩展名。我使用拆分method.it在Firefox中是好的,但我IE它获得图像的完整地址与域名,所以它有一些(。)s之前获得(。)的图像扩展名。在IE中分割方法错误

有没有更好的方法来做到这一点? 这里是我使用的代码:

var imagename = $("img",this).attr("src").split(".")[0]; 
var imageextension = $("img",this).attr("src").split(".")[1]; 

谢谢。

+0

可能重复的[如何从使用JavaScript/jQuery的URL拉文件名?](http://stackoverflow.com/questions/1302306/how-to-pull-the-file-name-from-a -url -using-javascript-jquery) – 2011-03-02 10:40:44

回答

2
// get the last path fragment 
var lastFragment = $('img', this).attr('src').match(/\/([^\/]+)$/)[1]; 
// split dot fragments 
var lastFragmentSplit = lastFragment.split('.'); 
// name is first 
var imageName = lastFragmentSplit[0]; 
// extension is second 
var imageExtension = lastFragmentSplit[1]; 

注意:如您所愿,如果你有文件名像names.with.dots.then.extension.jpg这个简单的解决方案将无法工作。

IE浏览器无法正常工作的原因是因为即使您提供的原始属性只有一个文件名,当您要求输入src时,IE会解析完整的绝对URI。 Firefox保持不变。

0

您的代码非常无效。您正在查询所有img对象两次。尝试:

$('img').each(function(index) { 
    var parts = this.attr('src').split('.'); 
    console.log(parts); 
}); 
+0

这并不能解决问题。 – 2011-03-02 10:40:34

+0

我认为问题在于$(“img”,this).attr(“src”)是一个集合(页面的所有img)。 split()方法doens不适用于一个集合.. – 2011-03-02 10:42:56

+0

不,这是因为OP想要排除协议,域和路径,并且只拆分和使用最后一个片段。你的答案与OP的初始代码基本相同。 – 2011-03-02 10:45:47