Nithin Viswanathan
Nithin Viswanathan

Reputation: 3283

Cookie is not deleting properly using jquery

I have a task to set the cookie for the menu.I have a horizontal menu.When I click on the menu the id of the menu is set in to the cookie.But when I am selecting the next menu cookie shows the first input value.For that I used $.removeCookie("activeDivId");.But it doesn't work properly.How can I solve this problem? Html code is

 <div class="menuBar">
            <div id="divHome" class="menuHeader ui-corner-top">
                <span><a href="#" onclick="Home()" id="home">Home</a></span>
            </div>
            <div id="divNewTransaction" class="menuHeader ui-corner-top">
                <span><a href="#" onclick="NewTransaction()" >New Transaction</a></span>
            </div>
</div>

javascript file is

   $(document).ready(function () {
                $(".menuHeader").click(function () { 
                $.removeCookie("activeDivId");
                $.cookie("activeDivId", this.id); });
                alert(document.cookie);
                var activeDivId = $.cookie("activeDivId") ? $.cookie("activeDivId") : "divHome";
                $("#" + activeDivId).addClass("menuHeaderActive");
            });

Upvotes: 4

Views: 188

Answers (2)

Monica
Monica

Reputation: 615

$(document).ready(function () {

    //for debugging purpose, so that you can see what is in the menu cookie
    $('#debug').html('Cookie Content : ' + readCookie('menu'));

    //if cookie menu exists
    if (readCookie('menu')) {

        //loop through the menu item
        $('#menu a').each(function () {
            //match the correct link and add selected class to it
            if ($(this).html() == readCookie('menu')) $(this).addClass('selected');
        }); 
    }

    $('#menu a').click(function () {

        //Set the cookie according to the text in the link
        createCookie('menu', $(this).html(),1);
    });

});


/* Cookie Function */
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

Upvotes: 2

MR. Kumar
MR. Kumar

Reputation: 679

You Can Use this method instead of jquery Method

         function createCookie(name, value, days) {
          if (days) {

              var date = new Date();
              date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
              var expires = "; expires=" + date.toGMTString();
          }
          else var expires = "";

          //var fixedName = '';
       /// name =name;

          document.cookie = name + "=" + value + expires + "; path=/";
          this[name] = value;
      }

      function readCookie(name) {

          var nameEQ = name + "=";
          var ca = document.cookie.split(';');
          for (var i = 0; i < ca.length; i++) {
              var c = ca[i];
              while (c.charAt(0) == ' ') c = c.substring(1, c.length);
              if (c.indexOf(nameEQ) == 0) 
              return c.substring(nameEQ.length, c.length);

          }
          return c;
      }

      function eraseCookie(cookiename) {
          this.createCookie(cookiename, '', -1);
          this[cookiename] = undefined;
         // Ecookie(cookiename);


           }

Upvotes: 0

Related Questions