// ICoders jQuery snippets - kræver jsCoreExtensions.js
(function($) {
$.fn.outerHTML = function() {
/// Returnerer html fragment inklusiv elementet selv.
if ($.browser.msie) {
return this[0].outerHTML;
}
else {
var attrStr = "";
$(this[0].attributes).each(function(i, itm) {
attrStr += " {0}='{1}'".format(itm.name, itm.nodeValue);
});
return "<{0}{2}>{1}{0}>".format(this[0].tagName, this[0].innerHTML, attrStr);
}
};
$.fn.databind = function(data, config) {
/// Binder en array af objekter til HTML i siden
/// Array of objects used as datasource for the binding
if (data.isPrototypeOf(Array))
throw new Error("$.bind: Data skal være en array af objekter.");
config = config || { cssEven: "even", cssOdd: "odd" };
return this.each(function() {
// Setup
var $container = $(this).parent();
var bindingExpression = $(this).outerHTML();
// Fjern template
$container.empty();
// Bind
data.each(function(itm, i) {
$container.append(
$(bindingExpression.bind(itm))
.addClass(i % 2 == 0 ? config.cssEven : config.cssOdd));
});
});
};
})(jQuery);