Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 16.05.2009, 22:45 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard jQuery Toggle -> Cookie

Hallo,

ich möchte, wenn ich Ebenen ein- und ausblenden das der Status ob auf oder zu in einem Cookie gespeichert wird.
Verfallen kann das (der ?) Cookie mit Ende der Sitzung.
Oder wie wird so etwas gehandhabt?

Code:
<script type="text/javascript" src="scripts/jquery-1.3.1.js"></script>
<script type="text/javascript" src="scripts/jquery.cookie.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
    var arrA = $("a[rel='toggle']").each(function(intIndex) {

        // ID des zugehörigen Toggle-Elements ermitteln
        var linkID = String($(this).attr('href')).substr(1, $(this).attr('href').length);

        var status = {
            'true': 'open',
            'false': 'close'
        };

        // Element verstecken
        if(linkID) {
              $('#'+linkID).hide();
            $.cookie('#'+linkID, 'close');
        }
    
        // Togglefunktion an Link binden
        $(this).toggle(
            function() {
                $('#'+linkID).show(); // Einblenden
                $.cookie('#'+linkID, 'open');
                return false;
              },
              function() {
                $('#'+linkID).hide(); // Ausblenden
                $.cookie('#'+linkID, 'close');
                return false;
              }
          );
    });
});
</script>
HTML-Code:
 <ul class="iconlist">
        <li class="arrow"><a href="#change" rel="toggle" title="weitere Tabelle einblenden">weitere Tabelle</a></li>
      </ul>

        
      <div style="clear: both;" id="change"><!-- begin: #change -->
        <table class="MyTable" border="0" cellpadding="0" cellspacing="0">
          <thead>
            <tr>
              <th>Spalte 1</th>
              <th>Spalte 2</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Zeile 1</td>
              <td>Zeile 2</td>
            </tr>
            <tr>
              <td>Zeile 1.1</td>
              <td>Zeile 2.2</td>
            </tr>
          </tbody>
        </table>        
      </div><!-- end: #change --> 
Gruß Gerrit
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.05.2009, 09:55 Nach oben    #2
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 964
Standard

Hi Gerrit.

Scheint so, als würde nurnoch die Funktion fehlen, die Ebenen beim Start auch entsprechend der Cookie-Werte zu setzen.

Vielleicht hilft Dir das:

http://ifohdesigns.com/blog/tutorial...e-with-cookies

Bastian
__________________
www.bastian-fenske.de
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.05.2009, 11:20 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard

Hi Basti,

blöderweise macht er so garnicht.
Wo muss das hin, das der Cookie nach Sitzungsende verfällt?


Code:
<script type="text/javascript">
$(document).ready(function()
{
    var arrA = $("a[rel='toggle']").each(function(intIndex) {
 
        // ID des zugehörigen Toggle-Elements ermitteln
        var linkID = String($(this).attr('href')).substr(1, $(this).attr('href').length);
 
        var status = {
            'true': 'open',
            'false': 'close'
        };
 
        // Element verstecken
        if(linkID) {
              $('#'+linkID).hide();
            $.cookie('#'+linkID, 'close');
        }
 
        // Togglefunktion an Link binden
        $(this).toggle(
            function() {
                $('#'+linkID).show(); // Einblenden
                $.cookie('#'+linkID, 'open');
                return false;
              },
              function() {
                $('#'+linkID).hide(); // Ausblenden
                $.cookie('#'+linkID, 'close');
                return false;
              }
          );
 
         var linkID = $.cookie(linkID);
         if(status == 'close'){
               $('#'+linkID).hide();
         }
    });
});
</script>
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.05.2009, 11:59 Nach oben    #4
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 964
Standard

Verwendest Du nicht dieses Cookie-Plugin?

http://plugins.jquery.com/project/Cookie

Dort ist es doch dokumentiert:

http://stilbuero.de/jquery/cookie/jquery.cookie.js

Bastian
__________________
www.bastian-fenske.de
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.05.2009, 13:32 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard

doch verwende ich, bekomme es aber nicht gebacken.
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.05.2009, 14:16 Nach oben    #6
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard

Hallo,

sorry, aber er legt dieses besch... Cookie nicht ab.

Code:
<script type="text/javascript">
$(document).ready(function()
{
    var arrA = $("a[rel='toggle']").each(function(intIndex) {
        // ID des zugehörigen Toggle-Elements ermitteln
        var linkID = String($(this).attr('href')).substr(1, $(this).attr('href').length);
        var status = {
            'true': 'open',
            'false': 'close'
        };
        // Element verstecken
        if(linkID) {
            $('#'+linkID).hide();
            $.cookie(linkID, 'close');
        }
 
        // Togglefunktion an Link binden
        $(this).toggle(
            function() {
                $('#'+linkID).show(); // Einblenden
                $.cookie(linkID, 'open');
                return false;
              },
              function() {
                $('#'+linkID).hide(); // Ausblenden
                $.cookie(linkID, 'close');
                return false;
              }
          );
          var CookieID = $.cookie(linkID, {path: '/'});
          if(CookieID == 'close'){
                $('#'+linkID).hide();
          }
    });
});
</script>
Gerrit
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.05.2009, 10:30 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 964
Standard

Hallo Gerrit.

Probier das mal:

Code:
$(document).ready(function()
{
	$("a[rel='toggle']").each(function(intIndex) {

		var linkID = String($(this).attr('href')).substr(1, $(this).attr('href').length);
		var panel = $('#' + linkID);
		var cookieOptions = { expires: 0 };
		var cookieValue = $.cookie('toggle.'+linkID);

		if ('open' != cookieValue)
			panel.hide();
 
		$(this).toggle(
			function() {
				panel.show();
				$.cookie('toggle.'+linkID, 'open', cookieOptions);
				return false;
			},
			function() {
				$('#'+linkID).hide();
				$.cookie('toggle.'+linkID, null, cookieOptions);
				return false;
			}
		);
	});
});
Bastian
__________________
www.bastian-fenske.de
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.05.2009, 13:58 Nach oben    #8
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard

Hallo Basti,

danke, ich konnte es aber erst heute testen

Was mir aber auffällt ist, dass wenn ich eine Box öffne --> Seitenrefresh mache und dann die Box wieder schließen möchte, ich zweimal klicken muss

Aber das was ich wollte, das es im Cookie speichert wird gemacht.

Danke Gerrit,

vielleicht kannst du ja noch mal die Sache mit dem Doppelklicken dir anschauen
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.06.2009, 09:00 Nach oben    #9
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 964
Standard

Hi Gerrit.

Stimmt, der Status wird nicht gespeichert. Dann würde ich den Status in als Klasse abspeichern und anstatt toggle() click() verwenden, das dann je nach Status (sichtbar oder versteckt) eine von zwei Funktionen aufruft (zeige oder verstecke) :

Code:
$(document).ready(function(){

	function showPanel(id) {

		$('#' + id)
			.show()
			.addClass('toggle_visible')
			.removeClass('toggle_hidden');
		$.cookie('toggle.' + id, 'open', { expires: 0 });
	}

	function hidePanel(id) {

		$('#' + id)
			.hide()
			.addClass('toggle_hidden')
			.removeClass('toggle_visible');
		$.cookie('toggle.' + id, null);
	}
	

	$("a[rel='toggle']").each(function(intIndex) {

		var id          = String($(this).attr('href')).substr(1, $(this).attr('href').length);
		var panel       = $('#' + id);
		var cookieValue = $.cookie('toggle.' + id);

		if ('open' != cookieValue) {

			hidePanel(id);

		} else {

			showPanel(id);
		}
 
		$(this).click(
			function() {

				if (panel.hasClass('toggle_visible')) {

					hidePanel(id);

				} else {

					showPanel(id);
				}
				return false;
			}
		);
	});
});
Bastian
__________________
www.bastian-fenske.de
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2009, 07:40 Nach oben    #10
Neuer Benutzer
 
Registriert seit: 11.02.2008
Beiträge: 18
Standard

Hi Basti,

ich hatte mich damals garnicht bedankt bei dir.
Das mit dem Cookie hatte geklappt, danke an dieser Stelle nochmal.

Jetzt wollte ich das Script erweitern, das der Titel der Links noch sich ändern soll:
Code:
		$(this).click(
			function() {

				if (panel.hasClass('toggle_visible')) {

					hidePanel(id);
$(this).attr({'title': $(this).html($(this).attr('url')) + ' ausblenden'});

				} else {

					showPanel(id);
$(this).attr({'title': $(this).html($(this).attr('url')) + ' einblenden'});
				}
				return false;
			}
		);
Vielleicht könntest du nochmal schauen, wo das rein muss?
Ist es möglich auch das Script auf fadeIn/fadeOut umzustellen??

beste Grüße Gerrit
Gerrit ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wo ist mein cookie??? Xean PHP-Programmierung 4 06.11.2006 14:04
Eine Anmeldung -> Auf zwei Seiten Session starten und Cookie setzten Jan PHP-Programmierung 12 27.09.2006 20:00
Flash -> PHP -> MySQL thrawn Sonstige Programmiersprachen 8 02.02.2006 18:10
include -> html -> php/html Julied64 PHP-Programmierung 2 03.09.2005 12:35


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47