2013-04-27 6 views
0

J'ai un morceau de code que j'ai enchaîné comme ceci:Jquery chian au sein chian

$('iframe').contents().find('item').text(); 

Je voudrais ajouter quelque chose à l'intérieur de la chaîne comme ceci:

$('iframe').contents().find( $('item').next().text() ); 

Cela ne travaille pour moi mais je suis sûr que je l'ai déjà vu faire comme ça, mais je ne me souviens pas de la bonne façon. Donc, aider à ce sujet est apprécié. S'il vous plaît noter la façon régulière (enchaîner tout) ne fonctionne pas dans mon script, c'est pourquoi je dois aboutir à cette méthode.

EDIT Voici le code Im travail:

var $me = $('#iframe').contents().find('body *:eq(285)'), 
     crazyNumber = 99999999, 
     allOfYou = [ 
      { 
       elements: $me.parentsUntil('.list'), 
       target: $me.parentsUntil('.list').parent() 
      }, 
      { 
       elements: $me.nextUntil('.list'), 
       target: $me.nextUntil('.list').andSelf().filter(':last').next() 
      }, 
      { 
       elements: $me.prevUntil('.list'), 
       target: $me.prevUntil('.list').andSelf().filter(':last').prev() 
      } 
     ], 
     sorted = allOfYou.sort(function (objA, objB) { 
      var a = objA.elements.length + 1 || crazyNumber, 
       b = objB.elements.length + 1 || crazyNumber; 
      return a - b; 
     }); 



    alert(sorted[0].target.text()); 

Cela ne fonctionnera pas parce que .list est également iframe. Ainsi, par exemple

$me.parentsUntil('.list') 

devrait en fait être

$me.parentsUntil('#iframe').contents().find('.list') 

Cela ne fonctionnera pas parce qu'il ya plusieurs .list Jquery trouverez un autre .list tous les temps. Donc, j'ai besoin de dire quelque chose comme:

$('#iframe').contents().find($('body *:eq(285)').parentsUntil('.list')) 

Je dois tout mettre dans le sélecteur de trouver

+1

Que vous * vraiment * essayez de faire? Quelle est la signification du texte? – Blender

+0

@Blender Il n'y a rien de spécial pour le texte lui-même, c'est juste un exemple de code pour quelque chose de plus grand sur lequel je travaille. La façon habituelle ne fonctionne pas dans mon script (longue histoire ..) – Youss

+0

C'est un résultat de ma question précédente http://stackoverflow.com/questions/16250592/referring-twice-to-elements-in-iframe – Youss

Répondre

1

Vous pouvez utiliser .each():

$('iframe').contents().find('item').each(function() { 
    $(this).parentsUntil('.list')... 
}); 
+0

Le code ne fonctionne toujours pas. Le problème est que la structure du document change, donc quelqu'un était sympa de m'écrire le code ci-dessus pour prendre en compte ces changements. Cependant maintenant je reçois parfois le .list mais parfois je reçois img ou quelque chose d'autre (sur l'actualisation) qui ne devrait pas être le cas si vous regardez le code. Mais au moins maintenant je reçois une réponse, ce qui n'était pas le cas plus tôt, donc chaque méthode fonctionne bien, c'est le code (je pense que le calcul) qui doit être changé. Merci beaucoup :) – Youss

+0

Sur les secondes pensées .... En quoi est-ce différent du code ci-dessus, je déclare déjà l'élément à l'index: 285 Comment chaque méthode change-t-elle cela? J'ai découvert Im juste obtenant la production pour l'élément indexé, ainsi essentiellement le code entier ne fait rien. Il cherche juste l'index: peu importe et produit cela. – Youss

+0

Si vous pouvez penser à autre chose s'il vous plaît laissez-moi savoir (été à ce jour pendant des jours ..) – Youss