jquery variable in innere Function übergeben

praktikant81

Mitglied
Hi Leute,

ich habe mir schon dir Finger wunde gegooglet, habe aber nichts brauchbares gefunden.

Hier mal der Beispielcode

Javascript:
$('.id').click(function(){
  var id = $(this).val();
  alert(id);
  $('.id').change(function(){
    alert(id);
  });

});

Im Internet habe ich ergooglet das es so Functionieren soll. Beim Klick wird auch der Inhalt angezeigt. Nur wenn ich den Wert dann ändere wird nicht der alte Wert nochmal angezeigt, sonder es wird nur ein leeres Fenster geöffnet.

Was mache ich Falsch?
 
Zuletzt bearbeitet von einem Moderator:
Hai,

bei jQuery change() warst du vermutlich.
Und wie val() verwendet wird, ist dir auch bekannt wie dass click() nicht zieht bei SELCET OPTION.


LG
Idi
 
Zuletzt bearbeitet von einem Moderator:
Hi,

danke für deine Antwort aber irgendwie verstehe ich sie nicht ;-)
Ich komme gerade nicht dauf auf was du anspielen möchtest ;-)
Ich weiß ich mach was falsch habe mir auch diverse Sachen schon dazu durchgelesen aber ich komme einfach nicht drauf! Vielleicht ist es einfach auch zu spät dazu! :(
 
Meine Frage ist eigentlich, was du machen willst.

M. E. ist der Code korrekt, denn es wird gemacht, was gemacht werden soll, d. h. es wird immer ein Alert ausgegeben und ein Event-Handler zum Element hinzugefügt.

- Clickst du auf Chocolate, wird ein Alert mit Chocolate angezeigt und eine Event-Handler hinzugefügt.

- Clickst du dann auf Candy, wird ein Alert mit Candy angezeigt und, wegen des neuen Event-Handlers, auch Chocolate.

- Clickst du auf Taffy, wird ein Alert mit Taffy angezeigt und, wegen der neuen Event-Handler, auch Chocolate und Candy.

HTML:
<!DOCTYPE html>
<html>
<head>
  <style>
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <select class="id" name="sweets" multiple="multiple">
    <option>Chocolate</option>
    <option selected="selected">Candy</option>

    <option>Taffy</option>
    <option selected="selected">Caramel</option>
    <option>Fudge</option>
    <option>Cookie</option>

  </select>
  <div></div>
<script>

/*
    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("div").text(str);
        })
        .change();
*/        
        
$('.id').click(function(){
  var id = $(this).val();
  alert(id);
  $('.id').change(function(){
    alert(id);
  });
 
});       
        
</script>

</body>
</html>
 
Ok sag doch es war zu Spät!

Also ich habe eine Tabelle mit Inputfeldern in Werte stehen. Jetzt möchte ich durch den Click den Wert auslesen und in einer Variablen speichern.
Sollte der Benutzer jetzt noch was ändern in dem Input Feld, dann soll dies per Ajax in eine Datenbank geschrieben werden. Wenn aber bei der Übertragung etwas schief laufen sollte, soll der alte Wert der in der in "id" steht wieder in das Inputfeld geschrieben werden.
Dies geht ja aber nur wenn ich den Wert auch in der change-Function habe. Und da bekomme ich den nicht hin :-(
 
Also ich habe mein Problem gefunden ;-)
Ich bin davon ausgegangen das der Code nacheinander abgeabeitet wird.
Aber anscheinend wird Function für Function abgearbeitet.

Und da ich im Beispielcode vergessen habe das ich die Variable wieder leere wir da auch keiner drauf gekommen sein :rolleyes:

Nachdem ich das mit dem leeren der Variablen gelöscht habe funktioniert es auch ;-)

Javascript:
$('.id').click(function(){
  var id = $(this).val();
  alert(id);
  $('.id').change(function(){
    alert(id);
  });
  id = '';
});
 
Zurück