2009-07-29 12 views
13

Esiste un codice foreach in JQuery come in PHP? Ho un codice in PHP, comeforeach equivalente di php in 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'];?>"); 
} 

Esiste un equivalente di foreach in jQuery? Come posso ottenere questa stessa funzionalità in jQuery?

EDIT 1:

ho pensato che ha funzionato ma ottengo un errore. Il codice e il messaggio di errore sono indicati di seguito.

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'];?>"); 
} 

}

Messaggio di errore:

errore di sintassi per (in Array)

Qualcuno mi può aiutare ..

+1

JavaScript e PHP non possono interagire ... PHP crea il codice JavaScript prima che venga inviato al client. Dopo che è stato inviato al client, viene eseguito. Se guardi nel sorgente, vedrai che ciò che viene emesso da PHP è 'for (in Array) {' (perché '$ viewfield' è una variabile vuota, e' $ viewfields' è un array PHP che, se rappresentato come stringa mostra come 'Array'.) Avrai bisogno di fare tutto in JavaScript o in PHP, non puoi mescolare le due lingue. – Blixt

+0

ma a causa dell'uso di php all'interno di jquery, ricevo un messaggio di errore nel tag close.di documentazione (.)(). Se rimuovo quello per ogni codice php, l'errore è sparito e document.location funziona correttamente. Quindi ora come si scrive per ogni codice in JQuery? – Angeline

risposta

43

La funzione $.each è simile.

Esso consente di eseguire iterazioni array usando una funzione di callback in cui si ha accesso a ogni voce:

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


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

Forse è utile sapere, se si vuole rompere il ciclo, è possibile farlo con return false; o se si desidera ignorare una sola iterazione (continua), si return true;

25

Se si desidera iterare un oggetto, mi sento di raccomandare la variante JavaScript:

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

È possibile oggetti anche iterazione in jQuery come questo:
Nota! Fare questo è piuttosto inutile se non si pensa che questa sintassi sia molto più semplice da mantenere. La seguente sintassi ha molto più overhead rispetto a quanto sopra, standard JavaScript, for-loop.

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

Per iterare array, questo è come lo fate in JavaScript standard (supponendo arr è la matrice):

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

Per farlo in jQuery, si può fare in questo modo :

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

posso iterare sugli elementi di un array usando ciascuna funzione ?? – Angeline

+0

Sì, ho aggiunto come farlo ora. – Blixt

3

Jquery che operano sui selettori:

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

jQuery diretto $.ciascuna:

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

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

JS: Vaniglia per ciclo

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

JS # 2: vaniglia per

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

Js # 3: loop infinito

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

Javascript supporta la Sintassi for(data in data_array). jQuery ha anche una funzione $ .each (come già accennato)

+2

per-in itera sulle proprietà di un oggetto, non sugli elementi di una matrice. – NickFitz