Objekt oder nicht Objekt

N

Netzwerkidi

Hallo,

vielleicht kann mir jemand helfen. Der Wert h soll beim nächsten Click einen Wert haben, momentan ist er undefined.
Geht das nur, wenn ich aus dem Aufruf ein Objekt mache (closure)?
Außerdem wird das animate (height:auto) nicht ausgeführt, deshalb einmal als css () davor. Wie könnte man das ändern?

Update, das habe ich inzwischen, stelle ich nachher ein.

Andere Frage: wie kann ich durch den Selector "loopen"? D. h. hier im Beispiel

#Text1 .cls span:eq(0),'+
'#Text2 .cls span:eq(0),'+
'#Text3 .cls span:eq(0),'+
'#Text4 .cls span:eq(0)

Wie greife ich darauf zu?

Code:
$('#Text1 .cls span:eq(0),'+
  '#Text2 .cls span:eq(0),'+
  '#Text3 .cls span:eq(0),'+
  '#Text4 .cls span:eq(0)').click(function() {
  var h,obj = '#'+$(this).parent().attr('id')+' .cls_n';
  if ($(this).hasClass('c1') === true) {
    h = $(obj).height();
    $(obj).css({'height':'auto'}).animate({
      'height':'auto'
    },500, function() {
      $(this).removeClass('c1').addClass('c2').text('?');
    });
  } else {
    $(obj).animate({
      'height':h
    },500);   
  }
});

LG
Peter
 
Zuletzt bearbeitet von einem Moderator:
Hi

Durch den Selector loopen:
Javascript:
$("selector").each(function(index) {

});
http://api.jquery.com/each/


Den Rest versteh ich leider nicht ganz. Abgesehen dass folgende Zeile eh nicht funktioniert:
Javascript:
var h,obj = '#'+$(this).parent().attr('id')+' .cls_n';

Wäre h ein String und falls du in deinem Code in den ELSE Teil kommst würdest du bei animate somit mit der var h einen Text übergeben.
Javascript:
$(obj).animate({
      'height':h
    },500);
 
Hai,

die Sache ist inzwischen erledigt, undefined ist undefined, ist doch klar.
Manchmal bin ich ein echter Depp.

Dennoch würde mich interessieren wie man durch die Argumente des Selektors - nicht die im Zuge der Ausführung selektierten Werte - loopen kann, es ist ja ein Unterschied, ob ich zwei Argumente habe, die aber jeweils n Ergebnisse finden.

Es sollte also statt
Code:
$('#Text1 .cls span:eq(0),'+
  '#Text2 .cls span:eq(0),'+
  '#Text3 .cls span:eq(0),'+
  '#Text4 .cls span:eq(0)').
besser
Code:
$('.Text1 .cls span:eq(0),'+
  '.Text2 .cls span:eq(0),'+
  '.Text3 .cls span:eq(0),'+
  '.Text4 .cls span:eq(0)').
heißen.
 
Zuletzt bearbeitet von einem Moderator:
Ich weiss jetzt nicht genau für was man das brauchen kann, resp. denke ich dass man was man auch immer damit anstellen will es anders besser hinbekommt. (ZB vorher schon die verschiedenen Selektoren in ein Array speichern).
Aber mit .selector bekommst du den String der als Selector diente. Und mit .split(",") kannst du daraus ein Array machen.

Mit
$("h1,h2").selector.split(",")
bekommst du ein Array: ["h1", " h2"].
 

Neue Beiträge

Zurück