Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16
  1. #1
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    Question jQuery Problem mit closest();

    Tach!

    Es gibt auf einer Seite mehrere Klassen ".article".
    Innerhalb der ".article" sind nun je ein ".button".

    Bei Klick auf einen ".button" sollen ALLE ".article" AUSSER demjenigen, der den geklickten ".button" umgibt ihr Transparenz ändern.

    Nun hab ich folgendes:

    PHP-Code:
      $('.button').click(function() {
        $(
    '.article').animate({ 
            
    opacity'.2'
            
    }, 300, function callback() {
      $(
    this).closest('.article').animate({ 
            
    opacity'1'
            
    }, 300 );
        });
      }); 
    Ich dachte, man animiert erst alle ".article" auf die gewünschte neue Transparenz und feuert dann einen Callback ab, der den nächsstehenden ".article" wieder auf die urspüngliche Transparenz (also 1) zurückanimiert.

    Der erste Teil funktioniert auch soweit, nur der Callback nicht. Der animiert wieder ALLE ".article" auf 1 zurück und nicht nur den nächsten.

    Was mich verwundert, denn das alleine

    PHP-Code:
      $('.button').click(function() {
        $(
    this).closest('.article').animate({ 
            
    opacity'.2',
            }, 
    300 );
      }); 
    funktioniert wunderbar.

    Könnte mir jemand dabei helfen? Wo liegt der Fehler?

    Alternativ könnte ich mir auch vorstellen, auf den Callback zu verzichten und via filter() den closest ".article" gar nicht erst mit bei der Animation einzubeziehen.

    Nur weiss ich nicht, wie man animate() closest() und filter() miteinander verbinden soll, falls das überhaupt möglich ist.

    Irgendwelche Ideen?

  2. #2
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    Keiner?

    lg,
    s.

  3. #3
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: jQuery Problem mit closest();

    Zitat Zitat von Susi79 Beitrag anzeigen
    Könnte mir jemand dabei helfen? Wo liegt der Fehler?
    die animate funktion wird für alle elemente aufgerufen. der callback wird am ende JEDER animation gerufen.

    EDIT: filter habe ich mir gerade in der doku angesehen http://docs.jquery.com/Traversing/filter#expr
    filter(fn) sollte gehen. du mußt dir dein this merken, und in der funktion auf identität vergleichen.
    Geändert von tsseh (27-08-2009 um 20:52 Uhr)

  4. #4
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    Zitat Zitat von hesst Beitrag anzeigen
    die animate funktion wird für alle elemente aufgerufen. der callback wird am ende JEDER animation gerufen.

    EDIT: filter habe ich mir gerade in der doku angesehen http://docs.jquery.com/Traversing/filter#expr
    filter(fn) sollte gehen. du mußt dir dein this merken, und in der funktion auf identität vergleichen.
    Hey! Danke für die Antwort. Ich bin nur gerade am Anfang mit JS und jQuery Lernen und weiss noch nicht so recht, was Du mit "this merken, und in der funktion auf identität vergleichen." meinst (also ich weiss schon, was du meinst, aber ich kann es noch nicht in syntax ausdrücken)

    Könntest Du mir mit ein wenig Code helfen?

    *su

  5. #5
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: jQuery Problem mit closest();

    PHP-Code:
      $('.button').click(function() {
        (function(
    obj)
        {
          $(
    '.article').filter(function ()
          {
            return 
    this === obj;
          }).
    animate({ opacity'.2'}, 300);
        })(
    this);
      }); 

  6. #6
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    hm. da tut sich leider gar nichts, werden aber auch keine fehler ausgegeben.

  7. #7
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: jQuery Problem mit closest();

    Zitat Zitat von Susi79 Beitrag anzeigen
    hm. da tut sich leider gar nichts, werden aber auch keine fehler ausgegeben.
    ach, also der vergleich muß false liefern, da bei false ausgeschlossen wird und du mußt noch beim button auf den parentNode navigieren, und diesen vergleichen.

    versuchs mal mit
    Code:
      $('.button').click(function() {
        (function(obj)
        {
          $('.article').filter(function ()
          {
            return this !== obj.parentNode;
          }).animate({ opacity: '.2'}, 300);
        })(this);
      });

  8. #8
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    hui. die antwort war ja fix. leider wurden jetzt wieder alle .article auf opacity.2 gesetzt, auch derjenige welche, der es nicht soll.

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: jQuery Problem mit closest();

    Ist .button ein direktes Kind von .article?

  10. #10
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    Ein .article ist so aufgebaut:

    PHP-Code:
                    <div class="article">                        
                        <
    div class="post_content"></div>
                        <
    div class="post_meta">
                            <
    div class="more">
                                <
    class="button"></a>
                            </
    div>
                        </
    div>
                    </
    div
    Und wie im ersten post hier schon beschrieben –*mit closest kann man den direkt ansprechen wie im obigen Beispiel.

  11. #11
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: jQuery Problem mit closest();

    dann mußt du dich zu deinem entsprechenden element über die parents hangeln.

    Und wie im ersten post hier schon beschrieben –*mit closest kann man den direkt ansprechen wie im obigen Beispiel.
    closest gibt aber bestimmt ein gewraptes element zurück und closest muß suchen, mehrmals. da du aber weisst, wo dein element liegt, bist du auch wesentlich schneller.

  12. #12
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    Zitat Zitat von hesst Beitrag anzeigen
    dann mußt du dich zu deinem entsprechenden element über die parents hangeln.


    closest gibt aber bestimmt ein gewraptes element zurück und closest muß suchen, mehrmals. da du aber weisst, wo dein element liegt, bist du auch wesentlich schneller.
    Danke!

    Meinst Du so in etwa?

    PHP-Code:
    $('.awppost_link').click(function() {
        (function()
        {
          $(
    '.article').filter(function ()
          {
            return 
    this !== ('.article .post_meta .more').parentNode;
          }).
    animate({ opacity'.2'}, 300);
        })(
    this);
      }); 
    Geht leider nicht. Menno... vom Prinzip her versteh ich das ja alles, wenn es nur nicht immer am Syntax hapern würde.

  13. #13
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: jQuery Problem mit closest();

    Zitat Zitat von Susi79 Beitrag anzeigen
    Meinst Du so in etwa?
    nein, da du hier wieder eine liste bekommst von allen elementen.
    eine liste hat erstens keine eigenschaft parentNode und du willst ja auch nur mit deinem in obj gemerkten element vergleichen.

    obj ist dein gemerktes a-element mit class button.
    mit obj.parentNode hangelst du dich eins nach oben auf das div mit der class more.
    das hat natürlich auch wieder eine parentNode.
    wie du auf das div mit class article kommst sollte jetzt klar sein.

    Zitat Zitat von Susi79 Beitrag anzeigen
    Menno... vom Prinzip her versteh ich das ja alles, wenn es nur nicht immer am Syntax hapern würde.
    hab ich auch so vermutet.

  14. #14
    Susi79 ist offline Jungspund
    registriert
    24-05-2009
    Beiträge
    19

    AW: jQuery Problem mit closest();

    Hm... so langsam wird's mir etwas unangenehm.

    Also wenn obj.parentNode die klasse .more ist, dann müsste doch danach ('.post_meta').parentNode kommen, welche dann .article sein müsste.

    Sprich so:

    PHP-Code:
    $('.button').click(function() {
        (function(
    obj)
        {
          $(
    '.article').filter(function ()
          {
            return 
    this !== obj.parentNode.('.post_meta').parentNode;
          }).
    animate({ opacity'.2'}, 300);
        })(
    this);
      }); 
    Das läuft aber rein gar nicht.
    Kannst Du mir nicht mit dem nötigen Code aushelfen? Ich versprech dann auch ganz brav nochmal alles von Anfang an durchzugehen. Hab mir auch schon ein Buch bestellt.

  15. #15
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: jQuery Problem mit closest();

    return this !== obj.parentNode.parentNode.parentNode;

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Problem mit jQuery sortable()
    Von placebo76 im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 03-06-2009, 13:27
  2. tinyMCE: problem mit jquery validation plugin
    Von robkleinert im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 23-04-2009, 13:52
  3. layer problem mit Firefox: Carolina braucht Hilfe
    Von carolina im Forum JavaScript
    Antworten: 25
    Letzter Beitrag: 11-03-2005, 15:28
  4. Antworten: 5
    Letzter Beitrag: 28-02-2005, 18:50
  5. Problem beim kombinieren zweier Scripte
    Von thundervirus im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 17-01-2005, 13:28

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •