2017-08-30 4 views
1

拡張子が.svgのすべての画像を取得しようとしています。これは動作しますが、URLにパラメータを持つ画像は無視されます。画像の拡張子にはすべてのパラメータが含まれています。URL

私はsvgのようなワイルドカードを考えていますか?/ *?しかし、私はそれを把握することはできませんか?

おかげ

// SVG images 
     (function() { 
      svgImages = function() { 
       $('img[src$=".svg?/*"]').each(function() { 
        var $img = $(this); 
        var $imgID = $img.attr('id'); 
        var $imgClass = $img.attr('class'); 
        var $imgData = $(this).data(); 
        var $imgAlt = $img.attr('alt'); 
        var $imgURL = $img.attr('src'); 
        $.get($imgURL, function(data) { 
         var $svg = $(data).find('svg'); 
         if (typeof $imgID !== 'undefined') { 
          $svg = $svg.attr('id', $imgID); 
         } 
         if (typeof $imgClass !== 'undefined') { 
          $svg = $svg.attr('class', $imgClass + ' replaced-svg'); 
         } 
         if (typeof $imgAlt !== 'undefined') { 
          $svg = $svg.attr('aria-label', $imgAlt); 
         } 
         // Add replaced image data attributes to the new SVG 
         $.each($imgData, function(key, value) { 
          $svg = $svg.attr('data-' + key, value); 
         }); 
         // Check if the viewport is set, if the viewport is not set the SVG wont't scale. 
         if (!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) { 
          $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width')); 
         } 
         $svg = $svg.attr('role', 'img'); 
         // Remove any invalid XML tags as per http://validator.w3.org 
         $svg = $svg.removeAttr('xmlns:a'); 
         // Replace image with new SVG 
         $img.replaceWith($svg); 
        }, 'xml'); 
       }); 
      }; 
      if ($('img[src$=".svg"]').length) { 
       svgImages(); 
      } 
     }()); 

このURLは、それはSVG

だということをピックアップしていない例えば - /メディア/画像/ロゴ/ test.svg? &ハッシュ= 5E5E5D597365C12424C3E7865285E596B3F8BEF0

+0

が含まれている場合は、 '.SVG?*'試用できSRC値を取得することによって実装され、確認することができますか?そのことが分かれば教えてください。 – 82Tuskers

答えて

4

は、私はあなたがattribute containsセレクタを探していると思います。 $を使用している場合

あなたはsrcあなたのケースでは動作しませんどの.svgend withにしたいと言っています。

$('img[src*=".svg"]').each((i, item) => { console.log(item) })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<img src="abc.svg"> 
 
<img src="abc.jpg"> 
 
<img src="123.svg"> 
 
<img src="abc.png"> 
 
<img src="-/media/images/logo/test.svg?&hash=5E5E5D597365C12424C3E7865285E596B3F8BEF0">

+0

これは正しい答えです。 '.svg?* 'の私のコメントはうまくいきません。 – 82Tuskers

0

確かに正しい答えはすでに、$( 'IMG [SRC * = "SVG"]')で終わるために '$' のチェックを提供します。 もう一つの方法は、また、私はそれが「.SVG」

if($('img').prop('src').contains('.svg')).each(idx,item) 
    { 
    $(item) // use this object 
    } 
関連する問題