kostenloser Webspace werbefrei: lima-city


JQuery Funktionen, unbind?

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    travianinc

    travianinc hat kostenlosen Webspace.

    Das Vorhaben:

    Ich habe eine Indexseite, auf der ist ein Dropdown-Menu. Dieses Dropdown-Menu hat über JQuery eine Funktion gebunden, die ein zweites Dropdown-Menu aktualisiert. Ausserdem befindet sich auf der Indexseite noch ein DIV, in das verschiedene Seiteninhalte geladen werden. Bei Auswahl des Drop-Downs soll auch der Inhalt des DIVS aktualisiert werden.

    Das Problem:

    Jeder Inhalt, der in das DIV geladen wird muss unterschiedlich aktualisiert werden. Beim Laden der php in das DIV wird also auch eine .js geladen, in der eine Funktion an dieses Drop-Down gebunden wird, in der beschrieben wird wie diese spezielle Seite zu aktualisieren ist. Das ist dann die zweite Funktion die an das Drop-Down gebunden ist. Jetzt wird aber jedesmal, wenn eine neue Seite geladen wird eine weitere Funktion an das Drop-Down gebunden. Also muss die Funktion, die festlegt wie die Seite zu aktualisieren ist irgendwie weg, wenn ich eine neue Seite ins DIV lade, damit die neue Funktion angebunden werden kann. Ich wollte das mit unbind machen, bekomme es da aber nicht hin nur diese eine Funktion zu entfernen ohne die andere zu beeinträchtigen, die ich brauch um auf der Indexseite das zweite Dropdown zu steuern.

    Die Funktionen:

    Drop-Downs auf der Indexseite:
    <div class="location">
      <select class="locationselect regionselect"><option value="123">Text</option></select>
       <div class="locationselect system">
         <select class="systemselect"><option value="456">Blabla</option></select>
       </div>
    </div>


    Funktionen der Dropdowns, melden dem Server die aktuelle Auswahl. Wird mit der index.php aus der plugins.js geladen.
    $('.regionselect').change(function(){
        $.ajax({
          url: "location.php",
          type: "POST",
          dataType: "xml",
          data: ({region: $(".regionselect").val()}),
          success: function(msg) {
                     $(".systemselect").empty();
                     $(msg).find("system").each(function() {
                       $("<option/>").val($(this).attr("id")).text($(this).text()).appendTo(".systemselect");
                     });
                   }
        });
      });
    
      $('.systemselect').change(function(){
        $.ajax({
          url: "location.php",
          type: "POST",
          data: ({system: $(".systemselect").val()})
        });
      });


    Die Update Funktion, sagt wie die Seite aktualisiert werden soll. Wird mit der in das DIV geladene php geladen.
    $(".locationselect").change(function(){
        $.ajax({
          url: "calc.php",
          type: "POST",
          data: ({update: "content"}),
          success: function(msg) {
                     var updtav = $("update", msg).attr("available");
                     if(updtav == "no") $(".item-update").button( "option", "disabled", true );
                     else $(".item-update").button( "option", "disabled", false );
                     $(msg).find("item").each(function() {
                                                $(".item_"+$(this).attr("id")).find(".item-price").html($(this).text());
                                              });
                   }
        });
      });


    So lade ich im moment den neuen Seiteninhalt, der in der Navigation ausgewählt ist. Das Problem ist hier ebend das unbind(). Das mir auch die ersten beiden Funktionen abschießt.
    $(".content-link").click(function() {
              var newActive = $(".inactive-content").removeClass("inactive-content");
              var newInactive = $(".active-content").removeClass("active-content");
              $(".locationselect").unbind();
              newActive.load(this.name);
    
              newInactive.slideUp("fast", function() {
                newActive.slideDown("slow", function() {
                  newActive.addClass("active-content");
                  newInactive.addClass("inactive-content").html("");
                });
              });
            });


    Das ganze ist zusammengesetzt auf meiner Lima-Seite zu sehen.

    Irgendwie muss ich also eine Funktion dynamisch an den aktuellen Seiteninhalt erstellen, damit die Seite sich immer vernünftig aktualisiert wenn ich im Dropdown etwas auswähle.

    Ich hoffe ich konnte mein Problem einigermaßen verständlich beschreiben und finde hier Hilfe.

    //edit
    Schade, das hier keiner weiter helfen kann.
    Ich habs momentan umgangen, indem ich die Funktionen die ich rbauche nach dem unbind() einfach wieder dran hänge.
    Das finde ich aber eigendlich weniger "schön", vor allem muss ich jetzt aufpassen, das neue Funktionen an dieser stelle auch immer hinzugefügt werden.

    Beitrag zuletzt geändert: 10.9.2011 17:54:27 von travianinc
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!