图像切换按钮仅起作用一次
2013-07-09
379
我有一个图像按钮,我想切换它。但是,它在刷新时只切换一次。当我点击图像时,它应该变为第二张图片,下次点击时,又变回原始图片。通过此代码,我可以从第一张图片转到第二张图片,但再次点击时无法恢复原始图片。有人能指出我哪里做错了吗?这是我正在使用的整个脚本
HTML 和 jQuery -
<a href='#'>
<input type="image" src="/images/pulpit.jpg" id="btn-true" />
</a>
<script type="text/javascript">
$('#btn-true').click( function () {
if ($(this).prop("src", "/images/pulpit.jpg"))
$(this).prop("src", "smiley.gif");
else if ($(this).prop("src", "smiley.gif"))
$(this).prop("src", "/images/pulpit.jpg");
});
</script>
3个回答
您的条件语句有点错误,您实际上在检查中分配了一个来源,请更改以下行:
if ($(this).prop("src", "/images/pulpit.jpg"))
else if ($(this).prop("src", "smiley.gif"))
至:
if ($(this).prop("src") == "/images/pulpit.jpg")
else if ($(this).prop("src") == "smiley.gif")
tymeJV
2013-07-09
首先,您应使用
.attr()
来处理
属性
,使用
.prop()
来处理
属性
。然后,您需要比较输出,而不是像您当前尝试的那样进行设置。请看这个:
$('#btn-true').click( function () {
if ($(this).attr("src") == "/images/pulpit.jpg") {
$(this).attr("src", "smiley.gif");
} else if ($(this).attr("src") == "smiley.gif") {
$(this).attr("src", "/images/pulpit.jpg");
}
});
Eric
2013-07-09
您应该处理 CSS 类,而不是检查和更改图像 URL。 例如,当您单击图像时,您会检查此图像是否已切换。
if ($(this).hasClass("toggle"))
$(this).removeClass("toggle");
else
$(this).addClass("toggle");
然后在 CSS 中指定图像路径。
img { background-image:url(/images/pulpit.jpg); }
img.toggle { background-image:url(smiley.gif); }
编辑:
将您的 JavaScript 函数内容替换为
$(this).toggleClass('toggle');
结果将完全相同,但正如 @Eric 所提到的,最好使用 toggleClass() 方法。
每次单击图像时,如果尚未添加“toggle”CSS 类,则会添加该类,否则将被删除。
然后您可以在 CSS 中管理它(在您的情况下,添加上面提到的两个 css 类以显示不同的图像)。
glautrou
2013-07-09