2010-04-15 2 views
0

jQuery n00b의 비트가 너무 작아서 바보 같은 질문 인 것처럼 여겨주세요. jQuery UI (특히 정렬 가능한 포틀릿)를 사용하여 사이트를 만들고 있습니다. 포틀릿이 열려 있거나 쿠키에 닫혀 있는지 여부를 저장할 수있었습니다. 이것은 다음 코드를 사용하여 수행됩니다. 슬라이더 ID는 현재 각 포틀릿을 켜고 끄기 위해 컨트롤이 저장되는 곳입니다.jQuery UI 포틀릿 - 포틀릿을 쿠키로 저장하도록 토글합니다. (중간에!)

 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] 각 포틀릿의 구석으로 사용자에게 그것을 숨기는 다른 방법을 제공하기 위해 추가하면된다 싶습니다하지만 난 현재이 사용 쿠키 내에 저장하는 얻을 수 없습니다 해요 무엇 위의 코드.

누구나 내가 어떻게 할 수있는 포인터를 줄 수 있습니까?

미리 감사드립니다.

가레스

답변

0

클릭 기능에 다른 선택기를 추가 했습니까?

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