• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jQuery: '$("div.userinfo").css({ "display": "none" })' für ersten Treffer auslassen?

BRotondi

Neues Mitglied
Hallo allerseits

Z.B. unter Einführung können via den i-Button links von "Themen-Optionen" (Anhang anzeigen 1883) die Userinfos ein- und ausgeschaltet werden.

Ich möchte nun, dass auch im deaktivierten Zustand, die Userinfos für den ersten Beitrag sichtbar bleiben. D.h. der folgende JQuery soll den allerersten Treffer ignorieren:
Code:
$("div.userinfo").css({ "display": "none" })
Gibt es eine Möglichkeit, das Skript erst ab Treffer 2 die CSS-Eigenschaft verändern zu lassen (oder den 1. Treffer wieder rückgängig zu machen)? Oder wie würdet Ihr dieses Problem lösen?

Merci!
Bruno
 
Zuletzt bearbeitet:
Werbung:
Auf die Schnelle:

HTML:
<!DOCTYPE html>
<html><head>

<title>test</title>
</head><body>

<style type="text/css">
.info{ width:200px; height:200px; border:1px solid; }
#button  { width:20px; height:20px; background:#000; }
</style>

<div id="button"></div>


<div class="info">0</div>
<div class="info">1</div>
<div class="info">2</div>
<div class="info">3</div>
<div class="info">4</div>
<div class="info">5</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/JavaScript">
var bShow = true;

$('body').ready(function(){

  $('#button').bind('click', function() {
    bShow = !bShow;
    var elems = $('.info:not(:first)');
	
    if(bShow){
      elems.show('slow').attr({'aria-expanded' : 'true','aria-hidden': 'false'});
    }
    else{
      elems.hide('slow').attr({'aria-expanded': 'false','aria-hidden': 'true'});
    }
  });

});
</script>
</body></html>


Allerdings sind die JQuery-Selektoren, bzw. allgemein Selektoren nicht wirklich performant.
Eine andere Lösung wird folgen...wenn ich Zeit habe ;)

Gruß
Loon3y
 
Zuletzt bearbeitet:
Guten Morgen Loon3y

Wow, Merci! :). Ich hatte befürchtet, dass das mit JQuery nicht lösbar ist...

Was meinst Du mit "nicht performant"? Bremsen die Selektoren bereits beim Laden der Seite? Zumindest bei der Skript-Ausführung geht die Sache ja recht flott.

Beste Grüsse
Bruno
 
Werbung:
Oups... Heissen Dank für die Links!!

Ich werde somit bei JQuery bleiben, einfach um mich nicht zu übernehmen bzw. erst mal dessen Feinheiten auszukosten. Schon cool, was da so möglich ist :).

Besten Gruss
Bruno
 
Auch wenn JQuery ein sehr umfangreiches Framework ist, sollte man dennoch die Grundlagen von JavaScript erlernen.

90% der Fragen über irgendwelche Funktionalitäten von JQuery sind, weil man die Grundlagen nicht beherrscht, oder weil man sich nicht genug mit dem jeweiligen Framework beschäftigt hat.


Gruß
Loon3y
 
Werbung:
geht übrigens auch einfacher, bzw. kürzer:

HTML:
$(document).ready(function(){
  $('div.userinfo').not(':first').css({ 'display' : 'none' });
});

Es stimmt, das man wohl Erfahrung mit js haben sollte, bevor man mit jQuery anfängt.
Es ist aber auch so, das es nicht schaden kann, zu wissen, was jQuery so alles drauf hat.

Achja, und besser
$(document).ready()als
$('body').ready()

cheers
 
Heissen Dank!

.not(':first') ist wohl meine gesuchte Stecknadel - wobei ich bisher noch gar nicht ahnte, wie gross der Heuhaufen ist, den JQuery "so drauf hat" :).

Merci!
Bruno
 
Werbung:
Laut Selectors Dokumentation gibt es auch noch :gt(), was dafür sorgt, dass alle gefundenen Elemente, die innerhalb dieser Liste einen Index größer als die angegebene Zahl haben, verwendet. Wäre also noch kürzer als das, was bisher vorgeschlagen wurde. Nur mal so am Rande. ;)
 
Zurück
Oben