0

以下のスニペットを使用して、リンクされたドキュメントのファイル サイズを計算するために jQuery を使用しています。このコードは、 a 要素の後に span 要素でラップされた情報を挿入します。代わりに a 要素の値に挿入したいと思います。これは可能ですか?

ありがとう!

js (出典: http://jshidell.com/2010/09/20/show-document-file-size-using-jquery/ )

<script>
  function hdrDetails(i, elm, cl) {
    cl = cl/1024;  //divide content-length by 1024 (KB)
    var sz = cl>1024?"MB":"KB";  //if cl is still big, set to MB
    cl = cl>1024?cl/1024:cl;  //if cl is still big, divide again
    var len = $(elm).eq(i).text().length;  //check the link's text length
    if(len > 0) {
      //add a file size
      $(elm).eq(i).after("<span> ("+cl.toFixed(2)+" "+sz+")</span>");
    }
  }
  $(function() {
    var elm="a[href$='.pdf'],"+ //only the file types we want
    "a[href$='.doc'],"+
    "a[href$='.ppt'],"+
    "a[href$='.xls'],"+
    "a[href$='.docx'],"+ //don't forget 2007 versions
    "a[href$='.pptx'],"+
    "a[href$='.mht'],"+
    "a[href$='.xlsx']";
    $(elm).each(function(i, e) {
      if (e.hostname && e.hostname == location.hostname) {
        $.ajax({
          type: "HEAD",
          url: $(this).attr("href"),
          complete: function(xhr, textStatus) {
          var cl=xhr.getResponseHeader("content-length");
          if(textStatus=="success") {
            var cl=xhr.getResponseHeader("content-length");
            hdrDetails(i, elm, cl); //call the calculation fn
          }else{
            $(elm).eq(i).after("<span> (file not found)</span>");
          }
        }
      });
    }
  });
});
</script>

HTML の開始:

<a href="ms0778.01.01.pdf" target="_blank" title="Anti-Defamation League of B’nai B’rith. 1966,1975.">[Digital Archival Object]</a>

既存の js の後:

<a href="ms0778.01.01.pdf" target="_blank" title="Anti-Defamation League of B’nai B’rith. 1966,1975.">[Digital Archival Object]</a><span> (1.49 MB)</span>

望ましい効果:

<a href="ms0778.01.01.pdf" target="_blank" title="Anti-Defamation League of B’nai B’rith. 1966,1975.">[Digital Archival Object <span>(1.49 MB)</span>]</a>
4

1 に答える 1

2

これを使用して、リンクの最後の文字の直前にテキストを挿入できます:

var $e = $(elm).eq(i);
var t = $e.text();
$e.html(t.slice(0, -1)+"<span> ("+cl.toFixed(2)+" "+sz+")</span>"+t.slice(-1));
于 2012-12-13T17:14:02.977 に答える