Added some additional checks to make sure that the correct methods are being used in IE on XML documents.

This commit is contained in:
John Resig 2009-01-21 23:56:15 +00:00
parent 58a17e6e6d
commit 68b49cf427

View File

@ -655,15 +655,15 @@ try {
// The workaround has to do additional checks after a getElementById // The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching) // Which slows things down for other browsers (hence the branching)
if ( !!document.getElementById( id ) ) { if ( !!document.getElementById( id ) ) {
Expr.find.ID = function(match, context){ Expr.find.ID = function(match, context, isXML){
if ( context.getElementById ) { if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]); var m = context.getElementById(match[1]);
return m ? m.id === match[1] || m.getAttributeNode && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
} }
}; };
Expr.filter.ID = function(elem, match){ Expr.filter.ID = function(elem, match){
var node = elem.getAttributeNode && elem.getAttributeNode("id"); var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match; return elem.nodeType === 1 && node && node.nodeValue === match;
}; };
} }