我的图像如下
<img alt="" style="cursor: pointer" src="images/plus.png" width="20" height="20" />
我正在使用下面的代码
来改变这个img src1. $("[src*=plus]").click( function () {
$(this).attr("src", "images/minus.png");
});
2. $("[src*=minus]").click(function () {
$(this).attr("src", "images/plus.png");
});
第一个功能按预期工作 - 当我第一次点击按钮时图像变为'减',但是当我点击这个改变的'减'图像时,函数调用再次变为相同第一个功能。 我在这做错了什么。 请帮忙。
答案 0 :(得分:2)
您可以尝试使用on()
代替click()
或使用其他属性class
来检查图像的当前状态,只需单击一下即可轻松执行事件。
$("[src*=plus]").on("click",function () {
$(this).attr("src", "images/minus.png");
});
$("[src*=minus]").on("click",function () {
$(this).attr("src", "images/plus.png");
});
或者你可以使用以下作为 的 HTML:强>
<img alt="" style="cursor: pointer" src="images/plus.png" width="20" height="20" onclick="javascript:return img_click(this);"/>
JavaScript:
function img_click(el)
{
if($(el).attr("src").toLowerCase().indexOf('plus') != -1)
{
$(el).attr("src", "images/plus.png");
}
else
{
$(el).attr("src", "images/minus.png");
}
}
答案 1 :(得分:1)
你没有错,只需要使用on
功能,因为你在结果src
之后更改DOM
无法找到新的src
,所以你需要使用实时点击功能:
$(document).on('click','[src*=plus]',function(){
$(this).attr("src", "images/minus.png");
});
$(document).on('click','[src*=minus]',function(){
$(this).attr("src", "images/plus.png");
});
$(document).on('click','[src*=plus]',function(){
$(this).prop("src","images/minus.png");
console.log('changed to minus');
});
$(document).on('click','[src*=minus]',function(){
$(this).prop("src","images/plus.png");
console.log('changed to plus');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img alt="some text" style="cursor: pointer" src="images/plus.png" width="20" height="20" />
答案 2 :(得分:0)
您需要使用
$(document).on('click', '[src*=plus]', function(event) {
$(event.target).attr("src", "https://png.icons8.com/color/100/minus");
});
$(document).on('click', '[src*=minus]', function() {
$(event.target).attr("src", "https://png.icons8.com/color/100/plus");
});
当附加事件处理程序时,最初不存在带有src*=minus
的img,因此我们需要使用$(document).on('click', 'selector', handler)
,从而在文档上附加处理程序。