Портлеты пользовательского интерфейса jQuery — переключение портлетов на сохранение в файл cookie (на полпути!)

Я немного разбираюсь в jQuery n00b, поэтому, пожалуйста, извините меня, если это покажется глупым вопросом. Я создаю сайт, используя пользовательский интерфейс jQuery, в частности сортируемые портлеты. Я смог сохранить, был ли портлет открыт или закрыт для файла cookie. Это делается с помощью следующего кода. Идентификатор ползунка в настоящее время находится там, где хранятся элементы управления для включения и выключения каждого портлета.

     var cookie = $.cookie("hidden");
 var hidden = cookie ? cookie.split("|").getUnique() : [];
 var cookieExpires = 7; // cookie expires in 7 days, or set this as a date object to specify a date

 // Remember content that was hidden
 $.each( hidden, function(){
  var pid = this; //parseInt(this,10);
  $('#' + pid).hide();
  $("#slider div[name='" + pid + "']").addClass('add');
 })

 // Add Click functionality

 $("#slider div").click(function(){
  $(this).toggleClass('add');
  var el = $("div#" + $(this).attr('name'));
  el.toggle();
  updateCookie(el);
 });

 $('a.toggle').click(function(){
    $(this).parents(".portlet").hide();
    // *** Below line just needs to select the correct 'id' and insert as selector i.e ('#slider div#block-1') and then update cookie! ***
    $('#slider div').addClass('add');
 });

 // Update the Cookie
 function updateCookie(el){
  var indx = el.attr('id');
  var tmp = hidden.getUnique();
  if (el.is(':hidden')) {
   // add index of widget to hidden list
   tmp.push(indx);
  } else {
   // remove element id from the list
   tmp.splice( tmp.indexOf(indx) , 1);
  }
  hidden = tmp.getUnique();
  $.cookie("hidden", hidden.join('|'), { expires: cookieExpires } );
 }
}) 

// Return a unique array.
Array.prototype.getUnique = function() {
 var o = new Object();
 var i, e;
 for (i = 0; e = this[i]; i++) {o[e] = 1};
 var a = new Array();
 for (e in o) {a.push (e)};
 return a;
}

Что я хотел бы сделать, так это добавить [x] в угол каждого портлета, чтобы дать пользователю другой способ скрыть его, но я не могу в настоящее время сохранить это в файле cookie, используя приведенный выше код.

Может ли кто-нибудь дать мне указатель того, как я это сделаю?

Заранее спасибо!

Гарет


person Gareth    schedule 15.04.2010    source источник


Ответы (1)


Вы пытались добавить еще один селектор в функцию щелчка?

 $("#slider div, #slider div > span.ui-icon-x").click(function(){
  $(this).toggleClass('add');
  var el = $("div#" + $(this).attr('name'));
  el.toggle();
  updateCookie(el);
 });
person orolo    schedule 11.01.2011