JQuery - next() setzen?

THEJS

Mitglied
Hallo!

Folgendes: Ich habe eine mit div gemachte Tabelle. In dieser Tabelle will ich Zeilen austauschen, was auch schon ganz toll funktioniert, aber nur einmal.

Also ich klicke (momentan noch mit klicken, später mit ajax) auf die Zeile und diese wird mit der darauffolgenden ausgetauscht.
Das ganze hab ich mit next() gelöst.
Jetzt hab ich natürlich das Problem, dass wenn ich auf die Zeile klicke, die nun an der Cursorposition ist, die Zeilen nicht wieder ausgetauscht werden, sondern weiter auseinander gehen.
Hier der Code:
HTML:
  $(document).ready(function(){
      $(".row").click(function(event){
        if(!$(this).hasClass("header"))
        {
          $(this).animate({"top": "+=29px"});
          $(this).next().animate({"top": "-=29px"});
        }
      });
    });

Das ganze ist eig ein sehr logisches Verhalten.
Aber kann man das next() und prev() irgendwie neu auslesen oder setzen oder dergleichen?

Danke für eine Antwort!
greez
THEJS
 
Wie wärs, wenn du Sie tatsächlich vertauschst und es nicht nur so aussehen lässt.

Javascript:
$(document).ready(function(){
	$(".row").click(function(event) {
		var $this = $(this);
		
		if(!$this.hasClass("header")) {
			$this.next().after($this);
		}
	});
});

Das kannst du natürlich auch in die complete-Funktion der Animation stecken, damit es trotzdem animiert ist.
 
Danke CPoly!
Das was ich gesucht habe :)

Hier die Lösung für die Interessierten:

HTML:
<script type="text/javascript">
  $(document).ready(function(){
    $(".row").click(function(event){
      var $this = $(this);
      if(!$(this).hasClass("header"))
      {
        $(this).next().animate({"top": "-=29px", "font-size": "40px"}, 1000);
        $(this).next().animate({"font-size": "16px"}, 1000, function(){
          $(this).after($this);
        });
        $(this).animate({"top": "+=29px"}, 1000);
      }
    });
  });
</script>

greez
THEJS
 
Noch ein allgemeiner Tipp zu jQuery.
Man sollte alle jQuery Aufrufe zwischenspeichern und ein DOM Element nur genau ein einziges mal zu einem jQuery Objekt machen.

Also merke dir die jQuery-Objekte in Variablen. Dabei hat sich als Konvention bewährt, den Variablennamen mit einem Dollar zu starten, um klar zustellen, dass sich ein jQuery Objekt darin befindet.

Javascript:
var $this = $(this);
//Ab jetzt nur noch $this benutzen!

var $next = $this.next();
//Ab jetzt nicht nochmal next() aufrufen!

DOM-Operationen (wie z.B. next()) sind Performancefresser!
 
Zurück