TB7711: jquery Auslesen bestimmter Elemente aus DIV Klasse

Hallo zusammen,

ich habe ein Verständnisproblem.

Ich verwende mehrfach die Klasse "pic":

<div class="pic" id="bild">
<input type="file" id="bild" name="Bild[]">
<select class="select" id="id" name="name">
  <option value="notselected">wählen</option>
  <option value="op1">OPT1</option>
</select>
</div>

<div class="pic" id="bild">
<input type="file" id="bild" name="Bild[]">
<select class="select" id="id" name="name">
  <option value="notselected">wählen</option>
  <option value="op1">OPT1</option>
</select>
</div>

Die Klasse "pic" wiederholt sich also mehrfach, der Aufbau ist immer gleich, ein INPUT Feld und eine SELECTBOX.

Ich möchte nun mit jquery prüfen, ob für jede Klasse "pic" ein INPUT Wert vorliegt und welcher Wert in der SELECTBOX gewählt wurde.

Mein Ansatz war:

 $('.pic').each(function(){
     alert($("input").val());
     alert($("select").val());
});

Das funktioniert aber nicht, es wird für jede Klasse pic immer nur der erst gefundene Wert ausgegeben.

Wo liegt da der Denkfehler?

Danke und Gruß

  1. <select class="select" id="id" name="name">

    Das ist falsch, es müsste lauten:

    <select class="select" id="id" name="name" doppelt="doppelt" hält="hält" nicht="nicht" immer="immer" besser="besser">
    

    Die Klasse "pic" wiederholt sich also mehrfach, der Aufbau ist immer gleich, ein INPUT Feld und eine SELECTBOX.

    Der Aufbau ist sogar eine Nummer zu gleich. IDs sollten Eindeutig sein und nicht mehrfach vergeben werden.

    Ich möchte nun mit jquery prüfen, ob für jede Klasse "pic" ein INPUT Wert vorliegt und welcher Wert in der SELECTBOX gewählt wurde.

    Mein Ansatz war:

     $('.pic').each(function(){
         alert($("input").val());
         alert($("select").val());
    });
    

    Gar nicht übel der Versuch, aber du musst in der Callback-Funktion auch immer von dem Aktuellen Element ausgehen:

    $('.pic').each(function(i,pic){
       // i ist eine fortlaufende Nummer, die für jeden .pic-Treffer vergeben wird und die wir hier nicht weiter beachten müssen
       // pic ist das entsprechende DOM-Element selbst, das muss noch in jQuery-Objekt mutiert werden
       var $pic = $(pic);
       // Jetzt können wir die Nachfahren von $pic auf ein input-Element durchsuchen.
       $pic.find("input").val();
    });
    
    1. Hallo,

      Die Klasse "pic" wiederholt sich also

      Das ist bei Klassen sowohl erlaubt, als auch sinnvoll

      IDs sollten Eindeutig sein und nicht mehrfach vergeben werden.

      Nicht "sollten" sondern müssen, sonst wären es ja keine IDs.

      Gruß
      Kalk