2009-07-29 8 views
13

Existe-t-il un code foreach dans JQuery comme en PHP? J'ai un code en php, commepour chaque équivalent de php dans jquery?

<?php foreach ($viewfields as $viewfield): ?>  
if("<?php echo $viewfield['Attribute']['required'];?>"=='true'){ 
     $("<span class='req'><em> * </em></span>").appendTo("#fb_contentarea_col1down21 #label<?php echo $viewfield['Attribute']['sequence_no']?>"); 
    } 


    if(<?=$viewfield['Attribute']['type'];?>=='text'||<?=$viewfield['Attribute']['type'];?>=='date'||<?=$viewfield['Attribute']['type'];?>=='number'){ 
     $("<input id=input<?=$viewfield['Attribute']['sequence_no'];?> type= 'text' style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> ></input><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
    } 


    else if(<?=$viewfield['Attribute']['type'];?>=='textarea'){ 
     $("<textarea style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> id=input<?=$viewfield['Attribute']['sequence_no'];?>></textarea><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

Y at-il équivalent de foreach en Jquery? Comment puis-je accomplir cette même fonctionnalité dans jQuery?

EDIT 1:

Je pensais que cela a fonctionné, mais je reçois une erreur. Le code et le message d'erreur sont donnés ci-dessous.

for(<?=$viewfield;?> in <?=$viewfields;?>){ 

if("<?=$viewfield['Attribute']['required'];?>"=='true'){ 
      $("<span class='req'><em> * </em></span>").appendTo("#fb_contentarea_col1down21 #label<?php echo $viewfield['Attribute']['sequence_no']?>"); 
} 

if(<?=$viewfield['Attribute']['type'];?>=='text'||<?=$viewfield['Attribute']['type'];?>=='date'||<?=$viewfield['Attribute']['type'];?>=='number'){ 
      $("<input id=input<?=$viewfield['Attribute']['sequence_no'];?> type= 'text' style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> ></input><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

else if(<?=$viewfield['Attribute']['type'];?>=='textarea'){ 
      $("<textarea style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> id=input<?=$viewfield['Attribute']['sequence_no'];?>></textarea><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

}

Message d'erreur:

erreur de syntaxe pour (en Array)

quelqu'un peut me aider ..

+1

JavaScript et PHP ne peuvent pas interagir ... PHP crée le code JavaScript avant qu'il ne soit envoyé au client. Après son envoi au client, il est exécuté. Si vous regardez dans la source, vous verrez que ce que PHP est 'pour en sortie (en Array) {' (car 'viewfield' $ est une variable vide, et' viewfields' $ est un tableau PHP qui, lorsqu'il est représenté comme chaîne montre comme 'Array'.) Vous aurez besoin de tout faire en JavaScript ou tout en PHP, vous ne pouvez pas mélanger les deux langues. – Blixt

+0

mais en raison de l'utilisation de php au sein jquery, je reçois un message d'erreur dans le document.ready() balise fermante. Si je supprime cela pour chaque code php, l'erreur est disparue et le document.location fonctionne correctement. Alors maintenant, comment écrire cela pour chaque code dans JQuery? – Angeline

Répondre

43

La fonction $.each est similaire.

Il vous permet de parcourir des tableaux en utilisant une fonction de rappel où vous avez accès à chaque élément:

var arr = [ "one", "two", "three", "four", "five" ]; 


$.each(arr, function(index, value) { 
    // work with value 
}); 

est peut-être utile de savoir, si vous voulez briser la boucle, vous pouvez le faire avec return false; ou Si vous voulez ignorer une seule itération (continuer), vous return true;

25

Si vous voulez itérer un objet, je recommande la variante JavaScript:

for (var key in obj) { 
    alert(key + ': ' + obj[key]); 
} 

Vous pouvez aussi des objets Iterate dans jQuery comme ceci:
Remarque! Faire ceci est inutile à moins que vous pensiez que cette syntaxe est beaucoup plus simple à maintenir. La syntaxe ci-dessous a beaucoup plus de frais généraux que le précédent, JavaScript standard, for-loop.

$.each(obj, function (key, value) { 
    alert(key + ': ' + value); 
}); 

Pour itérer les tableaux, voici comment vous le faites en JavaScript standard (en supposant arr est le tableau):

for (var i = 0, l = arr.length; i < l; i++) { 
    alert(i + ': ' + arr[i]); 
} 

Pour le faire en jQuery, vous pouvez le faire comme ça :

$.each(arr, function (index, value) { 
    alert(index + ': ' + value); 
}); 
+0

puis-je itérer sur les éléments d'un tableau en utilisant chaque fonction ?? – Angeline

+0

Ouais, j'ai ajouté comment le faire maintenant. – Blixt

3

Jquery fonctionnant sur sélecteurs:

$('a').each(function() { 
    $(this).click(function(e) { 
     e.preventDefault() 
     var href = this.href; 
     open(href); 
    }); 
    // operate on the anchor node. 
}); 

jQuery direct $.chacun:

var a = ['one', 'two']; 

$.each(a, function() { 
    alert(this) 
}); 

JS: Vanille de boucle

for (var i = 0, len = 10; i<l; ++i) { 
    alert(i) 
} 

JS # 2: vanille pour

var humanLimbs = ['arms', 'legs']; 
for (var limb in humanLimbs) { 
    if (humanLimbs.hasOwnProperty(limb)) { 
     alert(limb) 
    } 
} 

Js # 3: boucle infinie

for (;;) { alert(1) } // dont try this :p 
4

Javascript soutient le for(data in data_array) syntaxe. jQuery a également une fonction de .each de $ (comme déjà mentionné)

+2

itération sur les propriétés d'un objet, pas les éléments d'un tableau. – NickFitz