jquery/tmpl/tmpl.js
2006-03-22 03:33:07 +00:00

106 lines
2.5 KiB
JavaScript

$.fn.get = function(i) {
return i == null ?
this.$$unclean ? $.sibling(this.$$unclean[0]) : this.cur :
(this.get())[i];
};
$.fn._get = function(i) {
return i == null ? this.cur : this.cur[i];
};
$.fn.set = function(a,b) {
return this.each(function(){
if ( b == null )
for ( var j in a )
this[$.attr(j)] = a[j];
else {
if ( b.constructor != String ) { // TODO: Fix this
for ( var i in b ) {
var c = $.Select(i,this);
for ( var j in c )
c[j][$.attr(a)] = b[i];
}
} else
this[$.attr(a)] = b;
}
});
};
function $C(a) {
if ( a.indexOf('<') >= 0 ) {
if ( a.indexOf('<tr') >= 0 ) {
var r = $C("table").html("<tbody>"+a+"</tbody>");
r.$$unclean = r.get(0).childNodes[0].childNodes;
} else {
var r = $C("div").html(a);
r.$$unclean = r.get(0).childNodes;
}
return r;
} else {
return $(document.createElement(a),document);
}
};
$.fn.appendTo = function() {
var self = this;
var a = arguments;
return this.each(function(){
for ( var i = 0; i < a.length; i++ ) {
if ( self.$$unclean )
$(a[i]).append( self.get() );
else
$(a[i]).append( this );
}
});
};
$.clean = function(a) {
var r = [];
for ( var i = 0; i < a.length; i++ ) {
if ( a[i].constructor == String ) {
// Cool, but has scary side-effects
//a[i] = a[i].replace( /#([a-zA-Z0-9_-]+)/g, " id='$1' " );
//a[i] = a[i].replace( /\.([a-zA-Z0-9_-]+)/g, " class='$1' " );
var div = document.createElement("div");
div.innerHTML = a[i];
for ( var j = 0; j < div.childNodes.length; j++ )
r[r.length] = div.childNodes[j];
} else if ( a[i].length ) {
for ( var j = 0; j < a[i].length; j++ )
r[r.length] = a[i][j];
} else {
r[r.length] = a[i];
}
}
return r;
};
// Frequently-used Accessors
window.cssQuery = $.Select;
document.getElementsByClass = function(a){return $.Select("."+a)};
document.getElementsBySelector = $.Select;
// Make Xpath Axes Sane
//var re = new RegExp( "/?descendant::", "i" );
//t = t.replace( re, " " );
//var re = new RegExp( "/?child::", "i" );
//t = t.replace( re, "/" );
// If only...
//var re = new RegExp( "/?following-sibling::", "i" );
//t = t.replace( re, " + " );
//var re = new RegExp( "/?preceding-sibling::", "i" );
//t = t.replace( re, " ~ " );
//var re = new RegExp( "/?self::", "i" );
//t = t.replace( re, "" );
//var re = new RegExp( "/?parent::", "i" );
//t = t.replace( re, " .. " );
// following
// preceding
// ancestor
// ancestor-or-self
// descendant-or-self
// Deprecated
//style: function(a,b){ return this.css(a,b); },