javascript - 使用 jQuery addClass 添加类时脚本不起作用

标签 javascript jquery css

我在 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/

相关文章:

javascript - 数据表日期排序 dd-mm-yyyy 问题

html - 使用 HTML 和 CSS 在第一个打印页面上显示不同的页眉

css - JavaFx 8 - 在运行时更改 CSS 样式属性值

javascript - 如何向按钮添加链接?

javascript - 如何使主体在 ScrollDown 上向左滚动,反之亦然

javascript - 如何检查 JavaScript 函数定义中是否定义了参数?

javascript - 图片库 - Pinterest 喜欢使用 CSS 进行布局吗?

javascript - Javascript 6 中的字典和 map 有什么区别?

javascript - 更改现有事件的引用

javascript - 悬停时播放音频文件(并在鼠标移开时停止播放)