簡體   English   中英

使用jQuery addClass添加類時,腳本不起作用

[英]The script does not work when adding a class using jQuery addClass

我找到了一個檢測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');時,一切正常$('a').addClass('filetype'); 給我jquery.LiFileType.js:10 Uncaught TypeError: Cannot read property 'replace' of undefined錯誤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

在第二個文件標題之前刪除var,然后重試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM