2016-10-22 18 views
1

我有这样的代码:我点击一个输入收音机,并通过再次点击更改图像src ...我如何改变图像回来它是如何?

https://jsfiddle.net/Suiberu/rxu8wgxf/

//INPUT RADIO ON & OFF 
var prv; 
var markIt = function(e) { 
    if (prv === this && this.checked) { 
    this.checked = false; 
    prv = null; 
    } else { 
    prv = this; 
    } 
}; 

$(function() { 
    $('input.limit_radio').on('click', markIt); 
}); 


//CHANGE IMAGE 
function changeImage(imgName) { 
    image = document.getElementById('theimage'); 
    image.src = imgName; 
} 

点击输入型无线电..和是的,它必须是一个输入型收音机, 我不设法改变IMG SRC。 感谢一些jQuery代码,我可以设法关闭输入收音机。但改变后的图像仍然保持原来的状态。 因此,当我关闭输入类型收音机我想回到原来的img src。 我该如何做到这一点?

对不起,但JavaScript或jQuery不是我最强的技能,但你可以验证我要求什么,只是检查上面的网址。

谢谢!

+0

检查现在https://jsfiddle.net/rxu8wgxf/1/ –

回答

2

我删除了onclick处理程序,并添加了一个数据属性来换出网址。

https://jsfiddle.net/jjwilly16/37yn9xzy/1/

<img src="http://www.cbc.ca/i/img/theme/default/plus-up.png" name="theimage" id="theimage" data-alternate="https://www.ucl.ac.uk/2034/images/icons/arrow-blue-left.png"/> 


/INPUT RADIO ON & OFF 
var prv; 
var markIt = function(e) { 
    if (prv === this && this.checked) { 
    this.checked = false; 
    prv = null; 
    } else { 
    prv = this; 
    } 
    var img = document.getElementById('theimage'), 
     alternate = img.getAttribute('data-alternate'), 
     src = img.src; 
    img.src = alternate; 
    img.setAttribute('data-alternate', src); 

}; 

$(function() { 
    $('input.limit_radio').on('click', markIt); 
}); 
+0

好,这是一个很好的答案,谢谢。 但我忘了提供更多关于我的问题的细节,我的错。 你可以检查这个新的例子吗?你会明白我的怀疑。 而不是一个输入类型的收音机,我有两个。 开始时图像有一个问号。 – NotRocketScientist

+0

对不起,https://jsfiddle.net/Suiberu/v6xja0yd/这是代码。正如你所看到的,在开始时图像有一个问号。因此当您单击第一个输入时,图像会发生变化,如果您单击第二个输入,则图像会再次发生变化,但无论您是否关闭输入,图像都将保持为所选最后一个图像。如何通过关闭任何输入收音机回到原始问号? 谢谢! – NotRocketScientist

+0

好的,检查一下:https://jsfiddle.net/jjwilly16/2L3pnhfj/。我基本上只是检查了点击是否检查了收音机,并且如果它没有放回问号。 – jjwilly16

1

您可以使用mouseup事件,删除和替换原来的<input type="radio">元素。

$(function() { 
 
    var sources = ["https://www.ucl.ac.uk/2034/images/icons/arrow-blue-left.png" 
 
       , "http://www.cbc.ca/i/img/theme/default/plus-up.png"]; 
 

 
    var img = $("#theimage"); 
 

 
    var clicked = false; 
 

 
    function changeImage(e) { 
 
    
 
    img.attr("src", function() { 
 
     var checked = e.target.checked; 
 
     if (!clicked || checked) { 
 
     var clone = e.target.outerHTML; 
 
     $(e.target).remove(); 
 
     $(clone).insertAfter($("#theimage + br")); 
 
     $(".limit_radio").prop("checked", !clicked ? true : !checked); 
 
     } 
 
     return (!clicked ? (clicked = true) : !checked) ? sources[0] : sources[1] 
 
    }); 
 
    } 
 

 
    $(document).on("mouseup", "input.limit_radio", changeImage) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<img src="http://www.cbc.ca/i/img/theme/default/plus-up.png" name="theimage" id="theimage" /> 
 
<br> 
 
<input class="limit_radio" type="radio" name="edit_race" value="gnomin" id="race_gnomin">

的jsfiddle https://jsfiddle.net/rxu8wgxf/5/

+0

不,对不起,正如我说得很清楚,它不能是一个复选框,它必须是一个输入类型的收音机。 你可以检查这段代码吗? https://jsfiddle.net/Suiberu/v6xja0yd/正如我上面解释,现在这个问题有两个输入类型的收音机(或更多)我怀疑是...我如何回到原来的“问号”图像? – NotRocketScientist

相关问题