jquery-plugin-svg.js (2236B)
1 /*! jQuery SVG to Inline v0.1.4 2 * https://github.com/tiagoporto/jquery-svg-to-inline 3 * Copyright (c) 2016 Tiago Porto (tiagoporto.com) 4 * Released under the MIT license 5 */ 6 7 'use strict'; 8 9 $.fn.svgToInline = function (options) { 10 'use strict'; 11 12 var trigger = { 13 class: this.selector.replace('.', ''), 14 useClass: options && options.useTriggerClass || false 15 }; 16 17 this.each(function () { 18 var svg = { 19 currency: $(this), 20 oldClass: '', 21 newClass: '', 22 path: $(this).attr('data') || $(this).attr('src') 23 }, 24 request = { 25 element: '', 26 svgTag: '', 27 svgTagWithoutClass: '' 28 }, 29 inputClass = $(this).attr('class').split(' '), 30 inputClassLenght = inputClass.length; 31 32 if (inputClassLenght > 0) { 33 for (var i = 0; i < inputClassLenght; ++i) { 34 var space = ''; 35 36 if (inputClass[i] === trigger.class && !trigger.useClass) { 37 continue; 38 } 39 40 i !== inputClass.length - 1 && (space = ' '); 41 inputClass[i] && (svg.newClass += inputClass[i] + space); 42 } 43 } 44 45 $.ajax({ 46 url: svg.path, 47 dataType: 'text', 48 success: function success(response) { 49 request.element = response.replace(/<[?!][\s\w\"-\/:=?]+>/g, ''), request.svgTag = request.element.match(/<svg[\w\s\t\n:="\\'\/.#-]+>/g); 50 request.svgTagWithoutClass = request.svgTag[0].replace(/class=\"[\w\s-_]+\"/, ''); 51 svg.oldClass = request.svgTag[0].match(/class=\"(.*?)\"/); 52 53 // If exist class in svg add to svg.newClass 54 svg.oldClass && svg.oldClass[1] && svg.newClass && (svg.newClass = svg.oldClass[1] + ' ' + svg.newClass); 55 56 svg.newClass !== '' && (svg.newClass = 'class="' + svg.newClass + '"'); 57 58 request.svgTagWithoutClass = request.svgTagWithoutClass.replace('>', ' ' + svg.newClass + '>'); 59 60 svg.currency.replaceWith(request.element.replace(/<svg[\w\s\t\n:="\\'\/.#-]+>/g, request.svgTagWithoutClass)); 61 } 62 }); 63 }); 64 };