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