X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=jquery%2Fjquery.js;h=9f35e1a91348d74cf763e97fa17fd2c4bd0212cf;hb=4b6bcb235fc4ae30692d27910dffbf79295e36f4;hp=a7629d51b840fac3748da2a3d8cc6e701eb48b01;hpb=66565227051d2e1a066268fe1a7416b3d304e602;p=jquery.git diff --git a/jquery/jquery.js b/jquery/jquery.js index a7629d5..9f35e1a 100644 --- a/jquery/jquery.js +++ b/jquery/jquery.js @@ -318,7 +318,15 @@ function $(a,c) { return self; } -$.execute = eval; +(function(){ + var b = navigator.userAgent.toLowerCase(); + $.browser = + ( /safari/.test(b) && "safari" ) || + ( /opera/.test(b) && "opera" ) || + ( /msie/.test(b) && "msie" ) || + ( !/compatible/.test(b) && "mozilla" ) || + "other"; +})(); $.apply = function(o,f,a) { a = a || []; @@ -330,7 +338,7 @@ $.apply = function(o,f,a) { p[i] = 'a['+i+']'; } o.$$exec = this; - var r = $.execute('o.$$exec(' + p.join(',') + ')'); + var r = eval('o.$$exec(' + p.join(',') + ')'); o.$$exec = null; return r; } @@ -476,22 +484,22 @@ $.Select = function( t, context ) { var re = new RegExp( "^//", "i" ); t = t.replace( re, "" ); - if ( t.indexOf('..') === 0 || t.indexOf('/..') === 0 ) { + if ( t.indexOf('..') === 0 || t.indexOf('/..') === 0 ) { if ( t.indexOf('/') === 0 ) { t = t.substr(1,t.length); } r = $.map( ret, function(a){ return a.parentNode; } ); t = t.substr(2,t.length); t = $.cleanSpaces(t); - } else if ( t.indexOf('>') === 0 || t.indexOf('/') === 0 ) { + } else if ( t.indexOf('>') === 0 || t.indexOf('/') === 0 ) { r = $.map( ret, function(a){ return ( a.childNodes.length > 0 ? $.sibling( a.firstChild ) : null ); } ); t = t.substr(1,t.length); t = $.cleanSpaces(t); - } else if ( t.indexOf('+') === 0 ) { + } else if ( t.indexOf('+') === 0 ) { r = $.map( ret, function(a){ return $.sibling(a).next; } ); t = t.substr(1,t.length); t = $.cleanSpaces(t); - } else if ( t.indexOf('~') === 0 ) { + } else if ( t.indexOf('~') === 0 ) { r = $.map( ret, function(a){ var r = []; var s = $.sibling(a); @@ -504,19 +512,19 @@ $.Select = function( t, context ) { }); t = t.substr(1,t.length); t = $.cleanSpaces(t); - } else if ( t.indexOf(',') === 0 || t.indexOf('|') === 0 ) { + } else if ( t.indexOf(',') === 0 || t.indexOf('|') === 0 ) { if ( ret[0] == context ) { ret.shift(); } done = $.merge( done, ret ); r = ret = [context]; t = " " + t.substr(1,t.length); - } else { + } else { var re2 = new RegExp( "^([#.]?)([a-z0-9\\*_-]*)", "i" ); var m = re2.exec(t); if ( m[1] == "#" ) { // Ummm, should make this work in all XML docs var oid = document.getElementById(m[2]); - r = oid ? [oid] : []; - t = t.replace( re, "" ); + r = ret = oid ? [oid] : []; + t = t.replace( re2, "" ); } else { if ( m[2] === "" || m[1] == "." ) { m[2] = "*"; } @@ -547,13 +555,16 @@ $.Select = function( t, context ) { } } - var val = $.filter(t,r); - ret = r = val.r; - t = $.cleanSpaces(val.t); + if ( t ) { + var val = $.filter(t,r); + ret = r = val.r; + t = $.cleanSpaces(val.t); + } } if ( ret && ret[0] == context ) { ret.shift(); } done = $.merge( done, ret ); + return done; }; @@ -625,7 +636,7 @@ $.filter = function(t,r,not) { } if ( f !== null ) { - $.execute('f = function(a,i){return ' + f + '}'); + eval('f = function(a,i){return ' + f + '}'); r = g( r, f ); } } @@ -791,16 +802,14 @@ $.event.handle = function(event) { } for ( var i = 0; i < handlers.length; i++ ) { - try { - if ( handlers[i].constructor == Function ) { - this.$$handleEvent = handlers[i]; - if (this.$$handleEvent(event) === false) { - event.preventDefault(); - event.stopPropagation(); - returnValue = false; - } + if ( handlers[i].constructor == Function ) { + this.$$handleEvent = handlers[i]; + if (this.$$handleEvent(event) === false) { + event.preventDefault(); + event.stopPropagation(); + returnValue = false; } - } catch(e){} + } } return returnValue; };