2010-10-01 6 views
1

Quelqu'un sait pourquoi:comportement sélecteur jQuery dans IE7

var strId = "xyz"; 
var oSectionOuter = $("div#myr-body").find("div#" + strId); 

œuvres dans IE7 (en fait IE8 avec "mode de compatibilité") avec le code HTML ci-dessous, mais cela ne ?: pas

var strId = "xyz"; 
var oSectionOuter = $("div#" + strId); 

Selon le «excellent» débogueur Javascript de Microsoft, oSectionOuter finit par être une référence à l'ensemble de l'objet DOM plutôt qu'à un nœud particulier de celui-ci.

<html> 
<body> 
... 
<div id="myr-body"> 
... 
<div id="xyz"> 
... 
+1

Avez-vous plusieurs éléments 'id =" xyz "' dans votre page? –

+0

Merci pour l'idée - j'ai vérifié, et, non je ne le fais pas. – Stephen

Répondre

0

Il est difficile de dire à partir du HTML publié.

Si le HTML ressemble à ceci:

<html> 
<body> 
    <div id="myr-body"></div> 
    <div id="xyz"></div> 
</body> 
</html> 

Le problème est alors:

$("div#myr-body").find("div#xyz"); 

Ce sélecteur dit, « trouver le div dont l'id est égal à ' xyz 'mais existe dans la div nommée' myr-body '. " Cela ne sera jamais résolu.

Pour le sélecteur problématique pour travailler le code HTML aurait pour ressembler à:

<html> 
<body> 
    <div id="myr-body"> 
     <div id="xyz"></div> 
    </div> 
</body> 
</html> 

Sinon, vous pourriez avoir des multiples.