Commit 8cef646d authored by John Resig's avatar John Resig

First commit of the new doc system.

parent 41c94b46
var pos = [
"height", "width", "top", "left", "bottom", "right",
"paddingTop", "paddingRight", "paddingBottom", "paddingLeft",
"marginTop", "marginRight", "marginBottom", "marginLeft",
"lineHeight", "maxWidth", "maxHeight", "minWidth", "minHeight",
"textIndent", "fontSize"
];
for ( var i = 0; i < pos.length; i++ ) {
(function(){
var o = pos[i];
$.fn[o] = function(a){
return a ?
this.css(o,a) :
parseInt( this.css(o) );
};
})();
}
var posArg = [
"clientLeft", "clientTop", "clientWidth", "clientHeight",
"offsetLeft", "offsetTop", "offsetWidth", "offsetHeight",
"scrollLeft", "scrollTop", "scrollWidth", "scrollHeight"
];
for ( var i = 0; i < posArg.length; i++ ) {
(function(){
var o = posArg[i];
$.fn[o] = function(a){
return a ? this.each(function(){
this[o] = parseInt( a );
}) : this.size() > 0 ?
this.get(0)[o] :
null;
};
})();
}
$.fn.text = function(e) {
e = e || this.cur;
var t = "";
for ( var j = 0; j < e.length; j++ ) {
for ( var i = 0; i < e[j].childNodes.length; i++ ) {
t += e[j].childNodes[i].nodeType != 1 ?
e[j].childNodes[i].nodeValue :
$.fn.text(e[j].childNodes[i].childNodes);
}
}
return t;
};
#!/bin/sh
java -jar build/js.jar build/build.js
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/usr/bin/perl
my @stuff = split(",", "blur,focus,load,resize,scroll,unload,click,dblclick," .
"mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," .
"submit,keydown,keypress,keyup,error");
foreach (@stuff) {
print qq~
/**
* Bind a function to the $_ event of each matched element.
*
* \@example \$("p").$_( function() { alert("Hello"); } );
* \@before <p>Hello</p>
* \@result <p on$_="alert('Hello');">Hello</p>
*
* \@name $_
* \@type jQuery
* \@param Function fn A function to bind to the $_ event on each of the matched elements.
* \@cat Events
*/
/**
* Trigger the $_ event of each matched element. This causes all of the functions
* that have been bound to thet $_ event to be executed.
*
* \@example \$("p").$_();
* \@before <p on$_="alert('Hello');">Hello</p>
* \@result alert('Hello');
*
* \@name $_
* \@type jQuery
* \@cat Events
*/
/**
* Bind a function to the $_ event of each matched element, which will only be executed once.
* Unlike a call to the normal .$_() method, calling .one$_() causes the bound function to be
* only executed the first time it is triggered, and never again (unless it is re-bound).
*
* \@example \$("p").one$_( function() { alert("Hello"); } );
* \@before <p on$_="alert('Hello');">Hello</p>
* \@result alert('Hello'); // Only executed for the first $_
*
* \@name one$_
* \@type jQuery
* \@param Function fn A function to bind to the $_ event on each of the matched elements.
* \@cat Events
*/
/**
* Removes a bound $_ event from each of the matched
* elements. You must pass the identical function that was used in the original
* bind method.
*
* \@example \$("p").un$_( myFunction );
* \@before <p on$_="myFunction">Hello</p>
* \@result <p>Hello</p>
*
* \@name un$_
* \@type jQuery
* \@param Function fn A function to unbind from the $_ event on each of the matched elements.
* \@cat Events
*/
/**
* Removes all bound $_ events from each of the matched elements.
*
* \@example \$("p").un$_();
* \@before <p on$_="alert('Hello');">Hello</p>
* \@result <p>Hello</p>
*
* \@name un$_
* \@type jQuery
* \@cat Events
*/
~;
}
#!/usr/bin/perl
use Data::Dumper;
$Data::Dumper::Pair = ": ";
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Terse = 1;
open( F, $ARGV[0] || "../jquery-svn.js" );
my $f = join('', <F>);
close( F );
my @c;
while ( $f =~ /\/\*\*\s*(.*?)\s*\*\//gs ) {
my $c = $1;
$c =~ s/^\s*\* ?//mg;
$c .= "!!!";
my %ret;
$ret{ 'params' } = [];
$ret{ 'examples' } = [];
#while ( $c =~ s/^\@(\S+)\s*<pre>(.*?)<\/pre>\n//ms ) {
#print "PARAM '$1' '$2'\n";
#}
while ( $c =~ s/^\@(\S+) *(.*?)(?=\n\@|!!!)//ms ) {
my $n = $1;
my $v = $2;
$v =~ s/\s*$//g;
$v =~ s/^\s*//g;
$v =~ s/&/&amp;/g;
$v =~ s/(\s\s+)/"&nbsp;" x length($1)/eg;
$v =~ s/</&lt;/g;
$v =~ s/>/&gt;/g;
$v =~ s/\n/<br>/g;
$v = 1 if ( $v eq '' );
if ( $n eq 'param' ) {
my ( $type, $name, @v ) = split( /\s+/, $v );
$v = { "type" => $type, "name" => $name, "desc" => join(' ', @v) };
$n = "params";
} elsif ( $n eq 'example' ) {
$v = { "code" => $v };
$n = "examples";
}
if ( $n eq 'desc' || $n eq 'before' || $n eq 'after' || $n eq 'result' ) {
my @e = @{$ret{'examples'}};
$e[ $#e ]{ $n } = $v;
} else {
if ( exists $ret{ $n } ) {
if ( ref $ret{ $n } eq 'ARRAY' ) {
push( @{$ret{ $n }}, $v );
} else {
$ret{ $n } = [ $ret{ $n }, $v ];
}
} else {
$ret{ $n } = $v;
}
}
}
$c =~ s/\s*!!!$//;
$c =~ s/\n\n/<br><br>/g;
$c =~ s/\n/ /g;
$ret{ 'desc' } = $c;
if ( $c =~ /^(.*?(\.|$))/s ) {
$ret{ 'short' } = $1;
#$ret{ 'short' } =~ s/<br>/ /g;
}
#print "###\n" . $c . "\n###\n";
if ( exists $ret{ 'name' } ) {
push( @c, \%ret );
}
}
open( F, ">" . ($ARGV[1] || "jquery-docs-json.js") );
print F Dumper( \@c );
close( F );
$Data::Dumper::Indent = 0;
open( F, ">" . ($ARGV[2] || "jquery-docs-jsonp.js") );
print F "docsLoaded(" . Dumper( \@c ) . ")";
close( F );
<html>
<head>
<title>jQuery Documentation</title>
<link rel="stylesheet" href="style/style.css"/>
<script src="../jquery-svn.js"></script>
<script src="js/tooltip.js"></script>
<script src="js/pager.js"></script>
<script src="js/jsont.js"></script>
<script src="js/doc.js"></script>
<script src="data/jquery-docs-jsonp.js"></script>
</head>
<body>
<h1>jQuery Docs &raquo; API</h1>
<ul id="docs">
<li>Loading...</li>
</ul>
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,7 +4,8 @@ var rules = { ...@@ -4,7 +4,8 @@ var rules = {
"self[*]": "<li><span class='type'><span title='{@type($.type)}'>{$.type}</span></span> <span class='fn'>" + "self[*]": "<li><span class='type'><span title='{@type($.type)}'>{$.type}</span></span> <span class='fn'>" +
"<a href='#{$.name}' class='name' title='{$.name}: {$.short}'>{$.name}</a>({$.params})</span>" + "<a href='#{$.name}' class='name' title='{$.name}: {$.short}'>{$.name}</a>({$.params})</span>" +
"<div class='short'>{$.short}</div><div class='more'><div class='desc'>{$.desc}</div>{$.examples}</div></li>", "<div class='short'>{$.short}</div><div class='more'><div class='desc'>{$.desc}</div>{$.examples}</div></li>",
"self[*].params[*]": " <span class='arg-type' title='{@type($.type)}'>{$.type}</span> <span class='arg-name' title='{$.desc}'>{$.name}</span> ", trim: function(a){ console.log( a ); return !a || a.replace(/, $/); },
"self[*].params[*]": " <span class='arg-type' title='{@type($.type)}'>{$.type}</span> <span class='arg-name' title='{$.desc}'>{$.name}</span>, ",
"self[*].examples[*]": "<div class='example'><h5>Example:</h5><p>{$.desc}</p><pre>{$.code}</pre><b>HTML:</b><pre>{$.before}</pre><b>Result:</b><pre>{$.result}</pre></div>" "self[*].examples[*]": "<div class='example'><h5>Example:</h5><p>{$.desc}</p><pre>{$.code}</pre><b>HTML:</b><pre>{$.before}</pre><b>Result:</b><pre>{$.result}</pre></div>"
}; };
...@@ -20,39 +21,14 @@ var types = { ...@@ -20,39 +21,14 @@ var types = {
Function: "A reference to a Javascript function." Function: "A reference to a Javascript function."
}; };
function docsLoaded(docs) { $(document).ready(function(){
// Make sure that there are no private functions $("span[@title]").addClass("tooltip").ToolTipDemo('#fff');
docs = jQuery.grep( docs, "!a.private" ) $("a.name").click(function(){
// Sort by function name $("div.more,div.short",this.parentNode.parentNode).toggle().find("div.desc",function(){
.sort(function(a,b){ $(this).html( $(this).html().replace(/\n\n/g, "<br/><br/>") );
if ( a.name < b.name ) return -1;
else if ( a.name == b.name ) {
// Sort by number of parameters
if ( a.params.length < b.params.length ) return -1;
else if ( a.params.length == b.params.length ) return 0;
else return 1;
} else return 1;
}); });
return false;
// Put in the DOM, when it's ready
$(document).ready(function(){
$("#docs").html( jsonT( docs, rules ) );
setTimeout(function(){
$("#docs").pager( function(){return this.firstChild.nextSibling.nextSibling.firstChild.innerHTML;}, function(s,e){
$(this).html( jsonT( docs.slice( s, e ), rules ) );
/*$(this).slideUp("slow",function(){
this.style.opacity = 1;
this.style.width = "";
this.style.height = "";
$(this).html( jsonT( docs.slice( s, e ), rules ) );
$(this).slideDown("slow");
});*/
$("span",this).filter("[@title]").addClass("tooltip").ToolTipDemo('#fff');
$("a.name",this).click(function(){
$("div.more,div.short",this.parentNode.parentNode).toggle();
return false;
});
});
}, 13);
}); });
}
$("#docs").alphaPager( 1 );
});
$.fn.clone = function(){ $.fn.alphaPager = function(fn,type) {
return this.pushStack( $.map(this,"a.cloneNode(true)"), arguments ); type = type || "char";
if ( fn == undefined ) {
fn = function(a){ return _clean( $.fn.text.apply( a.childNodes ) ); };
} else if ( fn.constructor == Number ) {
var n = fn;
fn = function(a){ return _clean( $.fn.text.apply( [a.childNodes[ n ]] ) ); };
}
function _clean(a){
switch (type) {
case "char":
return a.substr(0,1).toUpperCase();
case "word":
return /^([a-z0-9]+)/.exec(a)[1];
}
return a;
}
return this.pager( fn );
}; };
$.fn.pager = function(step,fn) { $.fn.pager = function(step) {
var types = { var types = {
UL: "li", UL: "li",
OL: "li", OL: "li",
DL: "dt", DL: "dt",
TABLE: "tbody > tr" TABLE: "tr"
}; };
return this.each(function(){ return this.each(function(){
var pagedUI = this; var type = types[this.nodeName];
var rows = $(types[this.nodeName], this); var pagedUI = type == "tr" ? $("tbody",this) : $(this);
var rows = $(type, pagedUI);
var curPage = 0; var curPage = 0;
var names = [], num = []; var names = [], num = [];
...@@ -23,14 +43,14 @@ $.fn.pager = function(step,fn) { ...@@ -23,14 +43,14 @@ $.fn.pager = function(step,fn) {
if (rows.length > step) if (rows.length > step)
for ( var i = 0; i <= rows.length; i += step ) { for ( var i = 0; i <= rows.length; i += step ) {
names.push( names.length + 1 ); names.push( names.length + 1 );
num.push( [ i * step, step ] ); num.push( [ i, step ] );
} }
} else { } else {
var last; var last;
rows.each(function(){ rows.each(function(){
var l = step.apply( this ).substr(0,1); var l = step( this );
if ( l != last ) { if ( l != last ) {
names.push( l.toUpperCase() ); names.push( l );
var pre = num.length ? num[ num.length - 1 ][0] + num[ num.length - 1 ][1] : 0; var pre = num.length ? num[ num.length - 1 ][0] + num[ num.length - 1 ][1] : 0;
num.push( [ pre, 0 ] ); num.push( [ pre, 0 ] );
...@@ -41,8 +61,11 @@ $.fn.pager = function(step,fn) { ...@@ -41,8 +61,11 @@ $.fn.pager = function(step,fn) {
}); });
} }
if ( names.length ) { if ( names.length > 1 ) {
var pager = $("<ul class='nav-page'></ul>"); var pager = $(this).prev("ul.nav-page").empty();
if ( !pager.length )
pager = $("<ul class='nav-page'></ul>");
for ( var i = 0; i < names.length; i++ ) for ( var i = 0; i < names.length; i++ )
$("<a href=''></a>").rel( i ).html( names[i] ).click(function() { $("<a href=''></a>").rel( i ).html( names[i] ).click(function() {
...@@ -65,7 +88,7 @@ $.fn.pager = function(step,fn) { ...@@ -65,7 +88,7 @@ $.fn.pager = function(step,fn) {
function handleCrop( page ) { function handleCrop( page ) {
curPage = page - 0; curPage = page - 0;
var s = num[ curPage ][0]; var s = num[ curPage ][0];
var e = s + num[ curPage ][1]; var e = num[ curPage ][1];
if ( !curPage ) prev.hide(); if ( !curPage ) prev.hide();
else prev.show(); else prev.show();
...@@ -78,14 +101,9 @@ $.fn.pager = function(step,fn) { ...@@ -78,14 +101,9 @@ $.fn.pager = function(step,fn) {
.eq( curPage + 1 ) .eq( curPage + 1 )
.addClass("cur"); .addClass("cur");
rows pagedUI.empty().append(
.hide() jQuery.merge( rows, [] ).slice( s, s + e )
.gt(s - 1).lt(e) );
.show()
.end().end();
if ( fn )
fn.apply( pagedUI, [ s, e ] );
return false; return false;
} }
......
function jsonT(self, rules) {
var T = {
output: false,
init: function() {
for (var rule in rules)
if (rule.substr(0,4) != "self")
rules["self."+rule] = rules[rule];
return this;
},
apply: function(expr) {
var trf = function(s){ return s.replace(/{([A-Za-z0-9_\$\.\[\]\'@\(\)]+)}/g,
function($0,$1){return T.processArg($1, expr);})},
x = expr.replace(/\[[0-9]+\]/g, "[*]"), res;
if (x in rules) {
if (typeof(rules[x]) == "string")
res = trf(rules[x]);
else if (typeof(rules[x]) == "function")
res = trf(rules[x](eval(expr)).toString());
}
else
res = T.eval(expr);
return res;
},
processArg: function(arg, parentExpr) {
var expand = function(a,e){return (e=a.replace(/^\$/,e)).substr(0,4)!="self" ? ("self."+e) : e; },
res = "";
T.output = true;
if (arg.charAt(0) == "@")
res = eval(arg.replace(/@([A-za-z0-9_]+)\(([A-Za-z0-9_\$\.\[\]\']+)\)/,
function($0,$1,$2){return "rules['self."+$1+"']("+expand($2,parentExpr)+")";}));
else if (arg != "$")
res = T.apply(expand(arg, parentExpr));
else
res = T.eval(parentExpr);
T.output = false;
return res;
},
eval: function(expr) {
var v = eval(expr), res = "";
if (typeof(v) != "undefined") {
if (v instanceof Array) {
for (var i=0; i<v.length; i++)
if (typeof(v[i]) != "undefined")
res += T.apply(expr+"["+i+"]");
}
else if (typeof(v) == "object") {
for (var m in v)
if (typeof(v[m]) != "undefined")
res += T.apply(expr+"."+m);
}
else if (T.output)
res += v;
}
return res;
}
};
return T.init().apply("self");
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<html>
<head>
<title>jQuery Docs - API</title>
<link rel="stylesheet" href="style/style.css"/>
<script src="../jquery-svn.js"></script>
<script src="js/tooltip.js"></script>
<script src="js/pager.js"></script>
<script src="js/doc2.js"></script>
</head>
<body>
<h1>jQuery Docs - API</h1>
<ul id="docs">
<xsl:for-each select="method[not(@private)]">
<xsl:sort select="@name"/>
<xsl:sort select="count(params)"/>
<li>
<span class='type'><span title='TYPE' class='tooltip'><xsl:value-of select="@type"/></span></span>
<span class='fn'>
<a href='#{@name}' class='name' title=''><xsl:value-of select="@name"/></a>
<xsl:if test="not(@property)">(
<xsl:for-each select="params">
<span class='arg-type tooltip' title='TYPE'><xsl:value-of select="@type"/></span><xsl:text> </xsl:text>
<span class='arg-name tooltip' title='{@desc}'><xsl:value-of select="@name"/></span>
<xsl:if test="position() != last()">
<xsl:if test="@any"> or </xsl:if>
<xsl:if test="not(@any)">, </xsl:if>
</xsl:if>
</xsl:for-each>
)</xsl:if>
</span>
<div class='short'>
<xsl:value-of select="@short"/>
</div>
<div class='more'>
<div class='desc'>
<xsl:value-of select="desc"/>
</div>
<xsl:for-each select="examples">
<div class='example'>
<h5>Example:</h5>
<xsl:if test="desc">
<p><xsl:value-of select="desc"/></p>
</xsl:if>
<pre><xsl:value-of select="code"/></pre>
<xsl:if test="before">
<b>HTML:</b>
<pre><xsl:value-of select="before"/></pre>
</xsl:if>
<xsl:if test="result">
<b>Result:</b>
<pre><xsl:value-of select="result"/></pre>
</xsl:if>
</div>
</xsl:for-each>
</div>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
$.drug = null;
$.dragstart = function(e)
{
this.dragElement.deltaX = e.clientX - this.dragElement.offsetLeft;
this.dragElement.deltaY = e.clientY - this.dragElement.offsetTop;
// Save CSS
this.dragElement.oldPos = $.css(this.dragElement, 'position');
this.dragElement.oldCursor = $.css(this.dragElement, 'cursor');
this.dragElement.oldUserSelect = $.css(this.dragElement, 'user-select');
$(this.dragElement).css('position', 'absolute')
.css('cursor', 'move')
.css('user-select', 'none');
$.drug = this.dragElement;
};
$.dragstop = function(e)
{
$.drug = null;
// Restore CSS
$(this).css('cursor', this.oldCursor)
.css('user-select', this.oldUserSelect);
}
$.drag = function(e)
{
if ($.drug == null) {
return;
}
// Update position
var nx = (e.clientX - $.drug.deltaX);
var ny = (e.clientY - $.drug.deltaY);
// Bounds check
// Left edge
nx = (nx < 0) ? 0 : nx;
// right edge
nx = (nx + $.drug.offsetWidth) > document.width ? document.width - $.drug.offsetWidth : nx;
// Top
ny = (ny < window.scrollY) ? window.scrollY : ny;
// Bottom
ny = (ny + $.drug.offsetHeight) > window.innerHeight + window.scrollY ? window.innerHeight + window.scrollY - $.drug.offsetHeight: ny;
$($.drug).css('left', nx + 'px')
.css('top', ny + 'px');
};
$.draginit = false;
$.fn.Draggable = function(handle)
{
// Don't add > 1 of these handlers
if (!$.draginit) {
$(document).bind('mousemove', $.drag);
}
return this.each(function()
{
var dhe = handle ? $(this).find(handle) : $(this);
dhe.get(0).dragElement = this;
dhe.bind('mousedown', $.dragstart)
.bind('mouseup', $.dragstop);
});
};
// Work in Progress Sort Functions
//
$.fn.sort = function(f) {
cur = cur.sort(function(a,b){
if ( typeof f == 'object' )
var ret = f(a,b);
else
var ret = $.fn.genericSort(a,b,f);
if ( a < b )
b.parentNode.insertBefore( a, b );
else if ( a > b )
a.parentNode.insertBefore( b, a );
return ret;
});
return this;
}
$.fn.reverse = function() {
cur[0].parentNode.appendChild( cur[0] );
for ( var i = 1; cur && i < cur.length; i++ )
cur[i-1].parentNode.insertBefore( cur[i], cur[i-1] );
cur = cur.reverse();
return this;
}
$.fn.genericSort = function(a,b,c) {
if ( typeof a == "string" || typeof b == "string" ) {
} else if ( c != null ) {
a = sibling(a.firstChild)[c].innerText;
b = sibling(b.firstChild)[c].innerText;
} else {
a = a.innerText;
b = b.innerText;
}
// Case insensitive
a = a.toLowerCase();
b = b.toLowerCase();
// Figure out if it's an American-style date
var re = new RegExp( "^(\d{2}).(\d{2}).(\d{2,4})$" );
var ma = re.exec(a);
var mb = re.exec(b);
if ( ma.length && mb.length ) {
a = ma.reverse().join('');
b = mb.reverse().join('');
}
// If it contains a number, sort on that only
if ( a.match(/\d/) ) {
var re = new RegExp("[^0-9.-]","ig");
a = parseFloat( a.replace( re, "" ) );
b = parseFloat( b.replace( re, "" ) );
}
return ( a < b ? -1 : ( a > b ? 1 : 0 ) );
}
// test commit
$.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); },
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment