2011-06-04 82 views
0

我試圖有一個按鈕,當點擊背景位置的變化(我不想使用CSS,因爲我希望它堅持,而不僅僅是當單擊時)。然後,當用戶點擊保存按鈕時,它會檢查背景位置以查看要保存(打開或關閉)的設置。我正在使用jQuery,並且從我在網上看到的內容看起來好像我正在獲取所有內容,但它不起作用,所以有些事情是不對的。這裏是代碼:檢查/更改背景位置

function onoffButton(i, g) 
{ 
    $(i).click(function() { 
     if ($(g).css("backgroundPosition") == "0px -20px") { 
      $(g).css("backgroundPosition", "0px 0px"); 
     } else { 
      $(g).css("backgroundPosition", "0px -20px"); 
     } 
    }); 
} 

這將然後通過這樣的事情被稱爲:

onoffButton("#testswitchRating", "#faviconswitch"); 

然後進行檢查,以保存設置:

if ($("#ratingswitch").css("backgroundPosition") == "0px 0px") { 
    createCookie('showRatings', 0,365); 
} 

if ($("#ratingswitch").css("backgroundPosition") == "0px -20px") { 
    createCookie('showRatings', 1,365); 
} 

我讀的cookie這裏:

function checkSettings() 
{ 
if (readCookie('showRatings') == 0) { 
$('.rating').css('display', 'none'); 
$('#ratingswitch').css('background-position','0px 0px'); 
} else { 
$('.rating').css('display', 'inline'); 
$('#ratingswitch').css('background-position','0px -20px'); 
} 
} 

Th恩我在這裏把它叫做:

<body onload="checkSettings();"> 
+0

你嘗試基本的調試,如警報($(G)的.css(「backgroundPosition 「));檢查什麼值正在retrived? – Cracker 2011-06-04 22:01:08

+0

它來了說'0%-20px' – Erurainion 2011-06-04 22:05:36

+0

啊...那裏的問題是!你是否已經初始化HTML樣式屬性或使用jQuery的背景位置? – Cracker 2011-06-04 22:10:00

回答

2

我覺得這裏最好的建議是簡單地使用一個CSS類像.altPosition,並定義CSS文件中的差異。然後使用toggleClass()像這樣:

$(i).click(function() { 
    $(g).toggleClass("altPosition"); 
}); 

爲了節省您的cookie,那麼你可以做一些與$(g).is(".altPosition")檢測是在狀態,toggleClass()可以採取第二個參數是一個布爾值用於打開或關閉閱讀你的cookies:

// to write: 
createCookie("showRatings", $("#ratingsswitch").is(".altPosition"), 365); 
// and to read: 
$("#ratingsswitch").toggleClass("altPosition", readcookie("showRatings")); 

然後在你的CSS:

#faviconswitch { 
    background-position: 0px 0px; 
} 
#faviconswitch.altPosition { 
    background-position: 0px -20px; 
} 
+0

而不是$(g).css(「backgroundPosition」)==「0px -20px」)使用$(g).hasClass(「altPosition」); – Cracker 2011-06-04 22:29:39

+0

好的,謝謝你的幫助! – Erurainion 2011-06-04 22:30:56