2010-07-08 5 views
0

Ce code fonctionne très bien dans FF, Chrome & Safari, mais IE 8 est de lancer plusieurs erreurs d'argument non valide quand je le lance:jquery, IE 8 erreur d'argument non valide

<script type="text/javascript"> 

    $(window).load(function() { 
     $('div .box').each(function() { 
      $(this).width($(this).find('img').width()); 
     }); 
    }); 

</script> 

You can see it in context here: Mes compétences html/css sont plus ou moins impeccables mais je suis pratiquement désemparé avec jquery/javascript. J'ai cherché mais je ne peux pas comprendre ce qu'est l'erreur et comment la réparer. Toute aide grandement appréciée.

Merci.

+0

Avez-vous essayé de remplacer '$ (window) .load' par' $ (document) .ready'? –

+0

Il est utile que vous utilisiez les versions complètes des fichiers de script pendant que vous êtes en développement, car elles ont tendance à donner de meilleurs messages d'erreur ou à entrer dans un code qui peut être facilement débogué. – redsquare

+0

@ James, merci pour votre contribution, je dois utiliser le premier parce que j'ai besoin des images à charger avant de trouver les largeurs. – theothersimon

Répondre

2

Le code « $ (this) .Find ('img') "ne trouve pas une image dans tous les cas. Essayez:

$(window).load(function() { 
    $('div .box').each(function() { 
    var imageJQObject = $(this).find('img'); 
    if(imageJQObject.length > 0) { 
     $(this).width(imageJQObject.width()); 
    } 
    }); 
}); 
+0

+1, frappez-le sur la tête - c'est à dire n'aime pas 'nullpx' – redsquare

+0

Josh, je pense que vous l'avez craqué. Merci mec. 3 arguments invalides, 3 cases sans imgs. ça a du sens. Vos codes modifiés fonctionnent parfaitement. Y at-il quelque chose que je dois savoir à ce sujet? – theothersimon

+0

Pas vraiment "if (imageJQObject.length> 0)" vérifie juste s'il y a des objets dans imageJQObject avant d'opérer dessus. Le code "imageJQObject.width()" retournera null si imageJQObject est vide et la définition de la largeur à null n'est pas bonne. – JoshNaro

0

Y a-t-il d'autres informations sur l'exception, comme sur quelle ligne? J'ai l'impression que la largeur de l'image n'est pas trouvée, donc vous définissez la largeur de this avec null. Essayez et remplacez la largeur img avec quelque chose comme 100 et voir si elle jette encore.

+0

Salut Darki Z, merci pour l'entrée. ligne 116 char 165 de jquery js apparemment. Pour remplacer la valeur, est-ce que je fais comme ça? '\t $ (fenêtre) .load (function() { \t \t \t $ ('div .box'). Chaque fonction (() { \t \t \t $ ('100') de largeur. ($ (cela) .Find ('img') largeur());. \t \t \t}); \t \t \t}); ' Si cela est exact, vous avez également raison. Y a-t-il une solution? – theothersimon

0

En regardant le balisage sur votre page, vous devriez avoir

$(window).load(function() { 
    $('div.box').each(function() { 
     $(this).width($(this).find('img').width()); 
    }); 
}); 

Notez l'espace manquant entre div et .box. Si vous les écrivez séparément, cela signifie que vous êtes à la recherche de tous les éléments avec la classe box qui sont des enfants de div tout sans l'espace, il trouve toutes les div avec une classe box

+0

Merci. Bon point, même si je pense que Josh ci-dessous a craqué. – theothersimon