mplungjan的答案很好,但讓我建議一些替代方案。圖像交換最好用sprite完成,這樣圖像之間就不會有任何延遲切換。將兩個版本的圖像並排放在一個文件中。將該圖像設置爲div的背景,並調整背景位置以顯示一個或另一個圖像。
假設「pic1_bw_color_sprite.png」是一個75x75的彩色圖像,其下方有一個75x75的黑白圖像,使得最終圖像寬75px,高150px。設置你的CSS是這樣的:
#pic1
{
background-image: url(pic1_bw_color_sprite.png);
height: 75px;
width: 75px;
}
#pic1.bw
{
background-position: 0px -75px;
}
然後一些簡單的jQuery,使這一切工作:
$("#pic1").click(function()
{
$(this).toggleClass("bw");
});
嘗試在這裏:http://jsfiddle.net/gilly3/B7esz/
至於複製代碼,這是一個jQuery非常擅長避免的事情。只需使用一個選擇,其中包括每個需要的行爲類:
$("#pic1,#pic2,#pic3,#pic4").click(...);
// or
$(".bwSwap").click(...);
要存儲當前狀態的形式,這樣就可以更新你的數據庫,你需要得到一個參考到你的表單元素,然後設置value
屬性(或jQuery中的.val()
)。
$("#pic1").click(function()
{
$(this).toggleClass("bw");
$("#pic1isBW").val($(this).hasClass("bw"));
});
非常感謝...我會試試看。現在,是否有辦法將新文件名存儲在變量或隱藏輸入中,以便我可以將它傳遞給表單。該圖像是在一個窗體中,文件名從數據庫中獲取(通過PHP),我希望能夠在提交表單時將新的當前文件名狀態保存在數據庫中。 – RyanPitts 2011-04-10 20:32:25
@RyanPitts,嘿,你有沒有想過要支付專業? – sln 2011-04-11 04:04:10