From 8399263c574985c03046e4c04dfb1e320ce2ef45 Mon Sep 17 00:00:00 2001 From: Max Vogl Date: Sun, 31 Mar 2019 16:04:37 +0200 Subject: [PATCH] :sparkles: Add replace, after and before function --- dist/jquery.loadTemplate.js | 46 +++++++++++++++++++++++++-------- dist/jquery.loadTemplate.min.js | 2 +- readme.md | 4 +++ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/dist/jquery.loadTemplate.js b/dist/jquery.loadTemplate.js index aa9ba52..d1963b3 100644 --- a/dist/jquery.loadTemplate.js +++ b/dist/jquery.loadTemplate.js @@ -29,6 +29,9 @@ pageNo: 1, elemPerPage: 10, append: false, + replace: false, + after: false, + before: false, prepend: false, beforeInsert: null, afterInsert: null, @@ -94,7 +97,7 @@ todo = data.length; } - if (!settings.append && !settings.prepend) { + if (!settings.append && !settings.prepend && !settings.replace && !settings.after && !settings.before) { $that.html(""); } @@ -102,7 +105,7 @@ {}, settings, { - append: !settings.prepend && true, + append: !settings.prepend && !settings.replace && !settings.after && !settings.before && true, complete: function (data) { done++; if (done === todo || errored) { @@ -216,11 +219,17 @@ if (settings.beforeInsert) { settings.beforeInsert($templateHtml, data); } - if (settings.append) { + if (settings.append) { $(this).append($templateHtml); } else if (settings.prepend) { $(this).prepend($templateHtml); + } else if (settings.replace) { + $(this).html("").replaceWith($templateHtml); + } else if (settings.after) { + $(this).after($templateHtml); + } else if (settings.before) { + $(this).before($templateHtml); } else { $(this).html("").append($templateHtml); } @@ -291,6 +300,18 @@ $elem.append(applyFormatters($elem, value, "content", settings)); }); + processElements("data-content-replace", template, data, settings, function ($elem, value) { + $elem.replaceWith(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-content-after", template, data, settings, function ($elem, value) { + $elem.after(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-content-before", template, data, settings, function ($elem, value) { + $elem.before(applyFormatters($elem, value, "content", settings)); + }); + processElements("data-content-prepend", template, data, settings, function ($elem, value) { $elem.prepend(applyFormatters($elem, value, "content", settings)); }); @@ -318,19 +339,13 @@ processElements("data-alt", template, data, settings, function ($elem, value) { $elem.attr("alt", applyFormatters($elem, value, "alt", settings)); }); - - processElements("data-title", template, data, settings, function ($elem, value) { - $elem.attr("title", applyFormatters($elem, value, "title", settings)); - }); processElements("data-id", template, data, settings, function ($elem, value) { $elem.attr("id", applyFormatters($elem, value, "id", settings)); }); - processElements("data-css", template, data, settings, function ($elem, value) { - $elem.css(applyFormatters($elem, value, "css", settings)) - }); - + + processElements("data-class", template, data, settings, function ($elem, value) { $elem.addClass(applyFormatters($elem, value, "class", settings)); }); @@ -453,6 +468,15 @@ case "contentAppend": $this.append(applyDataBindFormatters($this, value, this)); break; + case "contentReplace": + $this.replaceWith(applyDataBindFormatters($this, value, this)); + break; + case "contentAfter": + $this.after(applyDataBindFormatters($this, value, this)); + break; + case "contentBefore": + $this.before(applyDataBindFormatters($this, value, this)); + break; case "contentPrepend": $this.prepend(applyDataBindFormatters($this, value, this)); break; diff --git a/dist/jquery.loadTemplate.min.js b/dist/jquery.loadTemplate.min.js index bf88099..36cd60c 100644 --- a/dist/jquery.loadTemplate.min.js +++ b/dist/jquery.loadTemplate.min.js @@ -1 +1 @@ -!function(t){"use strict";function e(e,n,c){var s,f,p,d=this;return n=n||{},p=t.extend(!0,{async:!0,overwriteCache:!1,complete:null,success:null,error:function(){t(this).each(function(){t(this).html(p.errorMessage)})},errorMessage:"There was an error loading the template.",paged:!1,pageNo:1,elemPerPage:10,append:!1,prepend:!1,beforeInsert:null,afterInsert:null,bindingOptions:{ignoreUndefined:!1,ignoreNull:!1,ignoreEmptyString:!1}},c),"array"===t.type(n)?(T=!0,i.call(this,e,n,p)):(a(e)||(s=t(e),"string"==typeof e&&0===e.indexOf("#")&&(p.isFile=!1)),f=p.isFile||void 0===p.isFile&&(void 0===s||0===s.length),f&&!p.overwriteCache&&w[e]?o(e,d,n,p):f&&!p.overwriteCache&&w.hasOwnProperty(e)?r(e,d,n,p):f?l(e,d,n,p):u(s,d,n,p),this)}function n(e,n){n?P[e]=n:P=t.extend(P,e)}function a(t){return"string"==typeof t&&t.indexOf("/")>-1}function i(n,a,i){i=i||{};var r,o=this,c=a.length,s=i.prepend&&!i.append,l=0,u=0,f=!1,p=[];if(i.paged){var d=(i.pageNo-1)*i.elemPerPage;a=a.slice(d,d+i.elemPerPage),c=a.length}return i.append||i.prepend||o.html(""),r=t.extend({},i,{append:!i.prepend&&!0,complete:function(t){(++l===c||f)&&(f&&i&&"function"==typeof i.error&&i.error.call(o,p),i&&"function"==typeof i.complete&&i.complete())},success:function(){++u===c&&i&&"function"==typeof i.success&&i.success()},error:function(t){f=!0,p.push(t)}}),s&&a.reverse(),t(a).each(function(){if(e.call(o,n,this,r),f)return!1}),this}function r(t,e,n,a){k[t]?k[t].push({data:n,selection:e,settings:a}):k[t]=[{data:n,selection:e,settings:a}]}function o(t,e,n,a){var i=w[t].clone();f.call(e,i,n,a),"function"==typeof a.success&&a.success()}function c(){return(new Date).getTime()}function s(t){return-1!==t.indexOf("?")?t+"&_="+c():t+"?_="+c()}function l(e,n,a,i){w[e]=null;var r=e;i.overwriteCache&&(r=s(r)),t.ajax({url:r,async:i.async,success:function(r){d(t(r),e,n,a,i)},error:function(t){p(e,n,a,i,t)}})}function u(e,n,a,i){(e.is("script")||e.is("template"))&&(e=t.parseHTML(t.trim(e.html()))),f.call(n,e,a,i),"function"==typeof i.success&&i.success()}function f(e,n,a){h(e=t("
").append(e),n,a),t(this).each(function(){var i=e.children().clone(!0);t("select",i).each(function(n,a){t(this).val(t("select",e).eq(n).val())}),a.beforeInsert&&a.beforeInsert(i,n),a.append?t(this).append(i):a.prepend?t(this).prepend(i):t(this).html("").append(i),a.afterInsert&&a.afterInsert(i,n)}),"function"==typeof a.complete&&a.complete.call(t(this),n)}function p(e,n,a,i,r){var o;for("function"==typeof i.error&&i.error.call(n,r),t(k[e]).each(function(t,e){"function"==typeof e.settings.error&&e.settings.error.call(e.selection,r)}),"function"==typeof i.complete&&i.complete.call(n);k[e]&&(o=k[e].shift());)"function"==typeof o.settings.complete&&o.settings.complete.call(o.selection);void 0!==k[e]&&k[e].length>0&&(k[e]=[])}function d(t,e,n,a,i){var r;for(w[e]=t.clone(),f.call(n,t,a,i),"function"==typeof i.success&&i.success.call(n);k[e]&&(r=k[e].shift());)f.call(r.selection,w[e].clone(),r.data,r.settings),"function"==typeof r.settings.success&&r.settings.success.call(r.selection)}function h(e,n,a){v("data-content",e,n=n||{},a,function(t,e){t.html(O(t,e,"content",a))}),v("data-content-append",e,n,a,function(t,e){t.append(O(t,e,"content",a))}),v("data-content-prepend",e,n,a,function(t,e){t.prepend(O(t,e,"content",a))}),v("data-content-text",e,n,a,function(t,e){t.text(O(t,e,"content",a))}),v("data-innerHTML",e,n,a,function(t,e){t.html(O(t,e,"content",a))}),v("data-src",e,n,a,function(t,e){t.attr("src",O(t,e,"src",a))},function(t){t.remove()}),v("data-href",e,n,a,function(t,e){t.attr("href",O(t,e,"href",a))},function(t){t.remove()}),v("data-alt",e,n,a,function(t,e){t.attr("alt",O(t,e,"alt",a))}),v("data-title",e,n,a,function(t,e){t.attr("title",O(t,e,"title",a))}),v("data-id",e,n,a,function(t,e){t.attr("id",O(t,e,"id",a))}),v("data-css",e,n,a,function(t,e){t.css(O(t,e,"css",a))}),v("data-class",e,n,a,function(t,e){t.addClass(O(t,e,"class",a))}),v("data-link",e,n,a,function(e,n){var i=t("");i.attr("href",O(e,n,"link",a)),i.html(e.html()),e.html(i)}),v("data-link-wrap",e,n,a,function(e,n){var i=t("");i.attr("href",O(e,n,"link-wrap",a)),e.wrap(i)}),v("data-options",e,n,a,function(e,n){t(n).each(function(){t("");n.attr("href",d(t,e,"link",i)),n.html(t.html()),t.html(n)}),l("data-link-wrap",t,r,i,function(t,e){var n=m("");n.attr("href",d(t,e,"link-wrap",i)),t.wrap(n)}),l("data-options",t,r,i,function(e,t){m(t).each(function(){var t=m("