2013-03-01 2 views
1

Voici mon code actuel javascriptméthode jquery attr() ne fonctionne pas, mais javascript version ne

var image = iframe.contentWindow.document.getElementsByClassName('productVisu').getElementsByTagName('img').getAttribute('src'); 

Cela fonctionne dans la récupération de l'attribut URL d'une image. Cependant, lorsque je tente cette version jquery:

var iframe = document.getElementsByTagName('iframe')[0]; 
var doc = iframe.contentWindow.document; 
var image = $('iframe').contents().find('.productVisu').$('img').attr('src'); 

Je reçois l'erreur de Firefox que ce pas une fonction. Comment puis-je résoudre ce problème et faire fonctionner la version jquery?

Merci

+0

Comment faites-vous référence à la bibliothèque jQuery? – tymeJV

+0

'' Mes autres fonctions jquery fonctionnent donc je ne pense pas que ce soit un erreur de référencement –

+1

Qu'est-ce que '.find ('. productVisu'). $ ('img')' supposé faire? Je ne pense pas que ce soit ce que vous attendez. Les objets jQuery n'ont pas de méthode '$'. –

Répondre

3

Modifier ceci:

$('iframe').contents().find('.productVisu').$('img').attr('src'); 

à:

$('iframe').contents().find('.productVisu img').attr('src'); 
+1

pourriez-vous s'il vous plaît expliquer comment cela fonctionne, si jquery si je voulais pour trouver l'enfant img d'une classe productVisu, je l'ai inclus dans le paramètre find functions? –

+0

@ jc.yin Comparez les sélecteurs au type de sélecteurs que vous utiliseriez en CSS. Ils sont la plupart du temps les mêmes. –

+0

Il est toujours utile d'expliquer le problème au lieu de simplement présenter une solution. – andyb

1

Je ne sais pas comment fonctionne votre code d'origine, depuis getElementsByClassName et getElementsByTagName listes de noeuds de retour, pas des noeuds individuels .

Essayez ceci:

var image = iframe.contentDocument.querySelector(".productVisu img").src; 

Ne jamais utiliser jQuery lorsque vous pouvez utiliser Vanilla JS. C'est comme tourner une vis avec un marteau.

+0

Est-ce que Vanilla JS fonctionne sur les anciens navigateurs comme IE7 ou 8? –

+0

Absolument. Eh bien, presque. IE7 n'avait pas 'querySelector', mais à moins que vous ne le supportiez spécifiquement, je ne m'inquiéterais pas trop d'un navigateur obsolète utilisé par moins de 0,66% d'Internet. –

+0

Je vais essayer, l'amélioration de la vitesse semble incroyable. Mais pourquoi dites-vous que l'utilisation de jquery est comme un marteau? Haha est-ce si mauvais? –

1

Je ne comprends pas le besoin des deux premières lignes de code dans votre exemple. Vous pouvez facilement faire ceci:

var image = $('iframe').eq(0).find('.productVisu img').attr('src'); 
Questions connexes