Jnnbo: Eine Lösung?

Beitrag lesen

Hallo dedlfix,

danke für deine sehr ausführliche Antwort,

Wenn du mehrfach auf dasselbe Element zugreifen möchtest, erstell eine Variable, dann muss es nicht mehrfach im DOM gesucht werden. Für jQuery gibts eine Konvention, dass ein solcher Element-Wrapper (Verweis auf ein HTML-Element oder eine Gruppe davon) mit $ anfängt. (Kann man befolgen, muss man aber nicht zwingend.)

var $erinnerung = $(".erinnerung"); Und dann $erinnerung statt $(".erinnerung") verwenden.

Ich hoffe ich habe dich richtig verstanden, hab mein Code etwas angepasst, vielleicht kannst du ja nochmals drüber schauen

	$(".erinnerung").click(function(){
			
			var $erinnerung = $(".erinnerung");
			var $insert_erinnerung = $(".insert_erinnerung");
			var $fa = $(".fa ");
			
			$erinnerung.toggleClass('opened');
				

			if ($erinnerung.is( ".opened" ) === true ){
				
				$insert_erinnerung.slideToggle();
				$("#datepicker").attr("required", true);
				
				$fa.removeClass("fa-plus"); 
        		        $fa.addClass("fa-minus-square");  

			}
		
			else {
				
				$insert_erinnerung.slideToggle();
				$("#datepicker").removeAttr("required", true);
				$('#datepicker').val('');
				$('#nachricht').val('');
				
				$fa.removeClass("fa-minus-square"); 
        		        $fa.addClass("fa-plus"); 			}   
								
				var $el = $(".text");
			            $el.text($el.text() == "Doch nicht" ? "Erinnerung hinzufügen": "Doch nicht");
	
		}); 

isVisible ist gut benannt, ohne $ vorn, weil das nur ein boolescher Wert ist und kein jQuery-Wrapper. Allerdings brauchst du diesen Wert nur ein einziges Mal, so dass eine Variable überflüssig ist. Der Vergleich kann direkt im if notiert werden.

Ok, dieses habe ich auch entfernt und direkt in im if notiert (siehe oben)

Innerhalb des if und else hast du jeweils 2 Zeilen, die exakt denselben Inhalt haben. Die werden also in jedem Fall auf gleiche Weise ausgeführt und können somit auch außerhalb notiert sein. Wenn du hingegen darauf Wert legst, dass sie in jedem Zweig nicht einfach nur irgendwie umschalten sondern wirklich in die vorgesehene Richtung, egal was vorher für ein Zustand war, dann solltest du die toggle-Zeilen durch Ein- beziehungsweise Ausschalter ersetzen.

Ich habe die "toggleClass" Funktion entfernt und dafür "removeClass" bzw. "addClass" verwendet.

Und dann wolltest du ja noch bei einer der beiden Bedingungen den Wert vom Input auf Leerstring setzen. Das sollte vielleicht auch noch hinzugefügt werden.

Diese zwei Optionen habe ich auch hinzugefügt:

$('#datepicker').val('');
$('#nachricht').val('');

Außerdem war da noch Gunnars Einwand, dass der Text nicht ins Javascript soll. In dem Fall solltest du dir nochmal seine Antwort raussuchen und den Umschalter in zwei Ausführungen erstellen, für jeden Zustand einen, und dann schaltest du nur noch einfach in den anderen Zustand, ohne jedes Element einzeln umzuschalten.

Ich habe mir Gunnars Posting nochmals angesehen, allerdings verstehe ich noch immer nicht genau, wie er das mit beiden Texte im Button vorstellt, ich möchte ja immer nur einen sehe. Leider hat er mir darauf keine Antwort mehr gegeben.

0 48

Div ein und ausblenden

Jnnbo
  • jquery
  1. 0
    dedlfix
    1. 0
      Jnnbo
      1. 0
        dedlfix
    2. 0
      Gunnar Bittersmann
  2. 0
    Gunnar Bittersmann
    • barrierefreiheit
    • jquery
    1. 0
      Gunnar Bittersmann
      1. 0
        Jnnbo
        1. 0
          Gunnar Bittersmann
          1. 0
            Jnnbo
            1. 0
              Gunnar Bittersmann
              • jquery
    2. 0
      Jnnbo
      1. 1
        Gunnar Bittersmann
        1. 0
          Jnnbo
          1. 0
            dedlfix
            1. 0
              Jnnbo
              1. 0
                dedlfix
                1. 0
                  Jnnbo
                  1. 0
                    Jnnbo
                    1. 0

                      Zusatzfrage

                      Jnnbo
                      • jquery
                      1. 0
                        dedlfix
                        1. 0
                          Jnnbo
                          1. 0
                            Jnnbo
                            1. 0

                              attr

                              Jnnbo
                              1. 0
                                Jnnbo
                                1. 0

                                  Zweite Function wird nicht ausgeführt

                                  Jnnbo
                                  1. 0
                                    Gunnar Bittersmann
                                    1. 0
                                      Jnnbo
                                      1. 0
                                        Gunnar Bittersmann
                                        1. 0
                                          Jnnbo
                                          1. 0

                                            Eine Lösung?

                                            Jnnbo
                                            1. 0
                                              dedlfix
                                              1. 0
                                                Jnnbo
                                                1. 0
                                                  Gunnar Bittersmann
                                                  1. 0
                                                    Jnnbo
                                                  2. 0
                                                    robertroth
                                                  3. 0
                                                    dedlfix
                                                2. 0
                                                  dedlfix
                                                  1. 0
                                                    Jnnbo
                                                    1. 0
                                                      dedlfix
                    2. 0
                      Gunnar Bittersmann
                      1. 0
                        Jnnbo
                        1. 0
                          Gunnar Bittersmann
                          • javascript
              2. 0
                Gunnar Bittersmann
                • jquery
                1. 0
                  Jnnbo
    3. 0
      dedlfix
  3. 0
    Gunnar Bittersmann
    • css
    • html
    • javascript
    1. 0
      Gunnar Bittersmann