mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
De-eval'd selectors and the various DOM methods (will marginally help our speed and make us more compatible with projects like Caja and Adobe AIR). Left a selector eval in for backwards compatibility support of selector plugins.
This commit is contained in:
parent
1faed11e3c
commit
5da2e98cb3
25
src/core.js
25
src/core.js
@ -1153,11 +1153,6 @@ jQuery.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
grep: function( elems, callback, inv ) {
|
grep: function( elems, callback, inv ) {
|
||||||
// If a string is passed in for the function, make a function
|
|
||||||
// for it (a handy shortcut)
|
|
||||||
if ( typeof callback == "string" )
|
|
||||||
callback = eval("false||function(a,i){return " + callback + "}");
|
|
||||||
|
|
||||||
var ret = [];
|
var ret = [];
|
||||||
|
|
||||||
// Go through the array, only saving the items
|
// Go through the array, only saving the items
|
||||||
@ -1230,18 +1225,16 @@ jQuery.extend({
|
|||||||
});
|
});
|
||||||
|
|
||||||
jQuery.each({
|
jQuery.each({
|
||||||
parent: "elem.parentNode",
|
parent: function(elem){return elem.parentNode;},
|
||||||
parents: "jQuery.dir(elem,'parentNode')",
|
parents: function(elem){return jQuery.dir(elem,"parentNode");},
|
||||||
next: "jQuery.nth(elem,2,'nextSibling')",
|
next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
|
||||||
prev: "jQuery.nth(elem,2,'previousSibling')",
|
prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
|
||||||
nextAll: "jQuery.dir(elem,'nextSibling')",
|
nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
|
||||||
prevAll: "jQuery.dir(elem,'previousSibling')",
|
prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
|
||||||
siblings: "jQuery.sibling(elem.parentNode.firstChild,elem)",
|
siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
|
||||||
children: "jQuery.sibling(elem.firstChild)",
|
children: function(elem){return jQuery.sibling(elem.firstChild);},
|
||||||
contents: "jQuery.nodeName(elem,'iframe')?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes)"
|
contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
|
||||||
}, function(name, fn){
|
}, function(name, fn){
|
||||||
fn = eval("false||function(elem){return " + fn + "}");
|
|
||||||
|
|
||||||
jQuery.fn[ name ] = function( selector ) {
|
jQuery.fn[ name ] = function( selector ) {
|
||||||
var ret = jQuery.map( this, fn );
|
var ret = jQuery.map( this, fn );
|
||||||
|
|
||||||
|
@ -8,61 +8,61 @@ var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
|
|||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
expr: {
|
expr: {
|
||||||
"": "m[2]=='*'||jQuery.nodeName(a,m[2])",
|
"": function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},
|
||||||
"#": "a.getAttribute('id')==m[2]",
|
"#": function(a,i,m){return a.getAttribute("id")==m[2];},
|
||||||
":": {
|
":": {
|
||||||
// Position Checks
|
// Position Checks
|
||||||
lt: "i<m[3]-0",
|
lt: function(a,i,m){return i<m[3]-0;},
|
||||||
gt: "i>m[3]-0",
|
gt: function(a,i,m){return i>m[3]-0;},
|
||||||
nth: "m[3]-0==i",
|
nth: function(a,i,m){return m[3]-0==i;},
|
||||||
eq: "m[3]-0==i",
|
eq: function(a,i,m){return m[3]-0==i;},
|
||||||
first: "i==0",
|
first: function(a,i){return i==0;},
|
||||||
last: "i==r.length-1",
|
last: function(a,i,m,r){return i==r.length-1;},
|
||||||
even: "i%2==0",
|
even: function(a,i){return i%2==0;},
|
||||||
odd: "i%2",
|
odd: function(a,i){return i%2;},
|
||||||
|
|
||||||
// Child Checks
|
// Child Checks
|
||||||
"first-child": "a.parentNode.getElementsByTagName('*')[0]==a",
|
"first-child": function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},
|
||||||
"last-child": "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a",
|
"last-child": function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},
|
||||||
"only-child": "!jQuery.nth(a.parentNode.lastChild,2,'previousSibling')",
|
"only-child": function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},
|
||||||
|
|
||||||
// Parent Checks
|
// Parent Checks
|
||||||
parent: "a.firstChild",
|
parent: function(a){return a.firstChild;},
|
||||||
empty: "!a.firstChild",
|
empty: function(a){return !a.firstChild;},
|
||||||
|
|
||||||
// Text Check
|
// Text Check
|
||||||
contains: "(a.textContent||a.innerText||jQuery(a).text()||'').indexOf(m[3])>=0",
|
contains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},
|
||||||
|
|
||||||
// Visibility
|
// Visibility
|
||||||
visible: '"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"',
|
visible: function(a){return "hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},
|
||||||
hidden: '"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"',
|
hidden: function(a){return "hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},
|
||||||
|
|
||||||
// Form attributes
|
// Form attributes
|
||||||
enabled: "!a.disabled",
|
enabled: function(a){return !a.disabled;},
|
||||||
disabled: "a.disabled",
|
disabled: function(a){return a.disabled;},
|
||||||
checked: "a.checked",
|
checked: function(a){return a.checked;},
|
||||||
selected: "a.selected||jQuery.attr(a,'selected')",
|
selected: function(a){return a.selected||jQuery.attr(a,"selected");},
|
||||||
|
|
||||||
// Form elements
|
// Form elements
|
||||||
text: "'text'==a.type",
|
text: function(a){return "text"==a.type;},
|
||||||
radio: "'radio'==a.type",
|
radio: function(a){return "radio"==a.type;},
|
||||||
checkbox: "'checkbox'==a.type",
|
checkbox: function(a){return "checkbox"==a.type;},
|
||||||
file: "'file'==a.type",
|
file: function(a){return "file"==a.type;},
|
||||||
password: "'password'==a.type",
|
password: function(a){return "password"==a.type;},
|
||||||
submit: "'submit'==a.type",
|
submit: function(a){return "submit"==a.type;},
|
||||||
image: "'image'==a.type",
|
image: function(a){return "image"==a.type;},
|
||||||
reset: "'reset'==a.type",
|
reset: function(a){return "reset"==a.type;},
|
||||||
button: '"button"==a.type||jQuery.nodeName(a,"button")',
|
button: function(a){return "button"==a.type||jQuery.nodeName(a,"button");},
|
||||||
input: "/input|select|textarea|button/i.test(a.nodeName)",
|
input: function(a){return /input|select|textarea|button/i.test(a.nodeName);},
|
||||||
|
|
||||||
// :has()
|
// :has()
|
||||||
has: "jQuery.find(m[3],a).length",
|
has: function(a,i,m){return jQuery.find(m[3],a).length;},
|
||||||
|
|
||||||
// :header
|
// :header
|
||||||
header: "/h\\d/i.test(a.nodeName)",
|
header: function(a){return /h\d/i.test(a.nodeName);},
|
||||||
|
|
||||||
// :animated
|
// :animated
|
||||||
animated: "jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length"
|
animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -390,15 +390,17 @@ jQuery.extend({
|
|||||||
|
|
||||||
// Otherwise, find the expression to execute
|
// Otherwise, find the expression to execute
|
||||||
} else {
|
} else {
|
||||||
var f = jQuery.expr[m[1]];
|
var fn = jQuery.expr[ m[1] ];
|
||||||
if ( typeof f != "string" )
|
if ( typeof fn == "object" )
|
||||||
f = jQuery.expr[m[1]][m[2]];
|
fn = fn[ m[2] ];
|
||||||
|
|
||||||
// Build a custom macro to enclose it
|
if ( typeof fn == "string" )
|
||||||
f = eval("false||function(a,i){return " + f + "}");
|
fn = eval("false||function(a,i){return " + fn + ";}");
|
||||||
|
|
||||||
// Execute it against the current filter
|
// Execute it against the current filter
|
||||||
r = jQuery.grep( r, f, not );
|
r = jQuery.grep( r, function(elem, i){
|
||||||
|
return fn(elem, i, m, r);
|
||||||
|
}, not );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user