Ankündigung

Einklappen
Keine Ankündigung bisher.

jQuery mehrfach auf selben veränderten Element

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jQuery mehrfach auf selben veränderten Element

    Hallo @ all,

    ich habe ein Problem mit einer jQuery-Funktion. Ziel ist es einen Kommentar hervorzuheben. Dabei habe ich ein Bild mit einem #-Link ausgestattet, so dass mir die nötigen Daten übergeben werden.

    Die Funktionen sind bis auf die Namen fast Baugleich und funktionieren jedoch je nur einmal.

    PHP-Code:
                            //////////////////////////////////////////
                            // Notiz markieren / nicht markieren
                            //////////////////////////////////////////                    
                            
    $(".marknotiz").click(function(e) {
                                
    e.preventDefault();
                                var 
    commentID = $(this).attr("title");
        
                                $(
    this).attr("class","unmarknotiz");
                                $(
    this).attr("href","#");
                                                        
                                $(
    '.notiz-' commentID).load("jsaction.php?action=markcomment&id=" commentID, function(responsestatusxhr){
                                    $(
    this).attr("src","img/msel.gif");
                                });    
                                                                                    
                            });        
                            
                            
    // Eventuell muss das HREF noch durch eine Route ersetzt werden, damit er das merkt!"!!!! (Gedanke am Abend))"
                            
                            
    $(".unmarknotiz").click(function(e) {
                                
    e.preventDefault();
                                var 
    commentID = $(this).attr("title");
        
                                $(
    this).attr("class","marknotiz");
                                $(
    this).attr("href","#");
                                                        
                                $(
    '.notiz-' commentID).load("jsaction.php?action=unmarkcomment&id=" commentID, function(responsestatusxhr){
                                    $(
    this).attr("src","img/mnosel.gif");
                                });    
                                                                                    
                            }); 

    Das dazu genutze HTML-Element sieht so aus:

    PHP-Code:
    <a href="#" title="845" class="marknotiz"><img class="notiz-845" src="img/mnosel.gif" border="0"></a
    Es klapp auch je einmal, also:
    marknotiz -> unmarknotiz, oder
    unmarknotiz -> marknotiz

    Jedoch klapp es nie zurück:
    marknotiz -> unmarknotiz -> marknotiz, oder
    unmarknotiz -> marknotiz -> unmarknotiz

    Was mache ich falsch.

    Gruß

    tino91


  • #2
    So auf die Schnelle würde ich sagen, Du löschst die alte Klasse nicht. Dadurch wird bei jedem weiteren Klick jede Funktion nacheinander ausgeführt.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      So auf die Schnelle würde ich sagen, Du löschst die alte Klasse nicht. Dadurch wird bei jedem weiteren Klick jede Funktion nacheinander ausgeführt.
      Du meinst damit das der Link

      PHP-Code:
      <a href="#" title="845" class="marknotiz">... 
      sich nicht zu

      PHP-Code:
      <a href="#" title="845" class="unmarknotiz">... 
      ändert? Da muss ich leider ein Kontra einlegen. Der Link wird mir im Firefox nach dem Klick im Quelltext korrekt verändert angezeigt.

      Sollte ich da an irgendwas vorbei rauschen, würde ich mich auf Klärung freuen.

      Gruß und danke für die rasche Antwort.

      tino91

      // Edit:

      Oder meintest du das, folgendes noch (nach?) dem ändern in die Funktion muss: $(".marknotiz").removeClass("marknotiz");

      Kommentar


      • #4


        PHP-Code:
        <a href="#" title="845" class="marknotiz unmarknotiz"
        Steht eigentlich oben, was ich meine.

        Oder meintest du das, folgendes noch (nach?) dem ändern in die Funktion muss: $(".marknotiz").removeClass("marknotiz");
        Das wäre meine Vermutung.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Entweder löst man das mit einer gemeinsamen Klasse, so dass du in dem Objekt einfach nen Schalter hast und kann das durch einen event bind lösen oder per $.live. Du solltest dir trotzdem mal addClass / removeClass ansehen.
          I like cooking my family and my pets.
          Use commas. Don't be a psycho.
          Blog - CoverflowJS

          Kommentar


          • #6
            Habe mit bind und unbind versucht zu arbeiten, brachte kein Erfolg. addClass und removeClass sind nun erstmal nicht mehr notwendig, ich habe eine entsprechende Funktion geschrieben, die nun beide Funktionen "marknotiz" und "unmarknotiz" entsprechend vereint. Dank if / else, ist das nun kein Problem mehr. Danke für die Tipps am frühen morgen

            Kommentar

            Lädt...
            X