我在 jQuery 中找到了一个检测文件类型的脚本:
$(function(){
jQuery.fn.LiFileType = function(options){
var options = jQuery.extend({
//gh: 25 //Высота пунктов меню
},options);
return this.each(function(index) {
var loadFile = $(this);
var file = loadFile.attr('href')
var reWin = /.*\\(.*)/;
var fileTitle = file.replace(reWin, "$1"); //выдираем название файла для w*s
reUnix = /.*\/(.*)/;
var fileTitle = fileTitle.replace(reUnix, "$1"); //выдираем название для *nix
var RegExExt =/.*\.(.*)/;
var extPre = fileTitle.replace(RegExExt, "$1");//и его расширение
ext = extPre.substr(0,3)
var pos;
if (ext){
switch (ext.toLowerCase())
{
case 'doc': pos = '(DOC)'; break;
case 'bmp': pos = '(BMP)'; break;
case 'jpg': pos = '(JPG)'; break;
case 'jpeg': pos = '(JPEG)'; break;
case 'mp3': pos = '(MP3)'; break;
case 'avi': pos = '(AVI)'; break;
case 'wmv': pos = '(WMV)'; break;
case 'flv': pos = '(FLV)'; break;
case 'pdf': pos = '(PDF)'; break;
case 'txt': pos = '(TXT)'; break;
case 'xls': pos = '(XLS)'; break;
case 'rar': pos = '(RAR)'; break;
case 'zip': pos = '(ZIP)'; break;
default : pos = '' ; break;
};
// Создаем специальный класс для нового класса
var cssRuleClass = 'filIcon_' + index;
$(this).addClass(cssRuleClass);
var cssRule = '.' + cssRuleClass + ':after{ content:\" '+pos+'\";}';
$('<style>').text(cssRule).appendTo('head');
};
});
};
$(".filetype").LiFileType();
//layout js
$('.filetype').click(function(){return false;});
})
.fileIcon:after {
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<a href="file.doc" class="filetype" >file.doc</a>
<a href="file.bmp" >file.bmp</a>
<a href="file.jpg">file.jpg</a>
<a href="file.jpeg">file.jpeg</a>
<a href="file.png">file.png</a>
<a href="file.gif">file.gif</a>
<a href="file.psd">file.psd</a>
<a href="file.mp3">file.mp3</a>
<a href="file.wav">file.wav</a>
<a href="file.ogg">file.ogg</a>
<a href="file.avi">file.avi</a>
<a href="file.wmv">file.wmv</a>
<a href="file.flv">file.flv</a>
<a href="file.pdf">file.pdf</a>
<a href="file.exe">file.exe</a>
<a href="file.txt">file.txt</a>
<a href="file.xls">file.xls</a>
<a href="file.rar">file.rar</a>
<a href="file.zip">file.zip</a>
只有当我用手写链接类 filetype
时一切正常...但是当我添加 $('a').addClass('filetype');
给我错误 jquery.LiFileType.js:10 Uncaught TypeError: Cannot read property 'replace' of undefined
可能是什么问题?已经 2 天寻找解决方案:(
UPD
也许用 span
试试这个效果?
例如添加数组并显示他包裹在标签 a
上:
var fileIcon = $( "a" ).wrap( "<span class='another'></div>" );
然后添加一个伪类?
最佳答案
问题似乎出在这里:
var fileTitle = file.replace(reWin, "$1"); //выдираем название файла для w*s
reUnix = /.*\/(.*)/;
var fileTitle = fileTitle.replace(reUnix, "$1"); //выдираем название для *nix
删除第二个 fileTitle 之前的 var 并重试
关于javascript - 使用 jQuery addClass 添加类时脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39784759/