php
  • jquery
  • foreach
  • 2009-07-29 14 views 13 likes 
    13

    Czy istnieje kod foreach w JQuery, jak w PHP? Mam kod w PHP, jakforeach odpowiednik php w 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'];?>"); 
    } 
    

    Czy istnieje odpowiednik foreach w jQuery? Jak mogę osiągnąć tę samą funkcjonalność w jQuery?

    EDIT 1:

    myślałem, że to działało, ale pojawia się błąd. Kod i komunikat o błędzie podano poniżej.

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

    }

    Komunikat o błędzie:

    błąd składni dla (w Array)

    Czy ktoś może mi pomóc ..

    +1

    JavaScript i PHP nie mogą wchodzić w interakcje ... PHP tworzy kod JavaScript zanim zostanie wysłany do klienta. Po wysłaniu do klienta jest wykonywany. Jeśli spojrzysz na źródło, zobaczysz, że to, co wyprowadza PHP to 'for (in Array) {' (ponieważ '$ viewfield' jest pustą zmienną, a' $ viewfields' jest tablicą PHP, która jest reprezentowana jako string wyświetla jako 'Array'.) Będziesz musiał zrobić to wszystko w JavaScript lub wszystko w PHP, nie możesz mieszać dwóch języków. – Blixt

    +0

    ale ze względu na użycie php w jquery, otrzymuję komunikat o błędzie w tagu close. document() close. Jeśli usunę to dla każdego kodu php, błąd zniknie, a document.location działa poprawnie. Więc jak to napisać dla każdego kodu w JQuery? – Angeline

    Odpowiedz

    43

    Funkcja $.each jest podobny.

    Pozwala iteracyjne tablic używając funkcji zwrotnej, gdzie masz dostęp do każdego elementu:

    var arr = [ "one", "two", "three", "four", "five" ]; 
    
    
    $.each(arr, function(index, value) { 
        // work with value 
    }); 
    

    Może jest wiedzieć, jeśli chcesz przerwać pętlę, można to zrobić z return false; lub jeśli chcesz pominąć tylko jedną iterację (kontynuuj), musisz return true;

    5

    Istnieje jQuery.each.

    25

    Jeśli chcesz iteracyjne obiektu, polecam wariant JavaScript:

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

    You może również iteracyjne obiekty w jQuery takich jak to:
    Uwaga! Wykonanie tego jest bezsensowne, chyba że uważasz, że ta składnia jest znacznie łatwiejsza do utrzymania. Poniższa składnia ma znacznie więcej narzutów niż powyższy, standardowy JavaScript, pętla for.

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

    iteracyjne tablic, to jak to zrobić w standardzie JavaScript (zakładając arr jest tablica):

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

    Aby to zrobić w jQuery, można zrobić to w ten sposób :

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

    Czy mogę iterować po elementach tablicy przy użyciu każdej funkcji? – Angeline

    +0

    Tak, dodałem, jak to zrobić teraz. – Blixt

    3

    Jquery działa na selektorów:

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

    jQuery direct $.każdy:

    var a = ['one', 'two']; 
    
    $.each(a, function() { 
        alert(this) 
    }); 
    

    JS: wanilia dla pętli

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

    JS # 2: wanilia do

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

    JS # 3: nieskończonej pętli

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

    JavaScript to umożliwia for(data in data_array) składnia. jQuery ma również funkcję $ .each (jak już wspomniano)

    +2

    for-in iteruje nad właściwościami obiektu, a nie elementami tablicy. – NickFitz

    0

    Możesz sprawdzić ten link. Javaascript For...in loop Myślę, że bardziej bezpośrednio odpowiada na twoje pytanie.

    Powiązane problemy