[英]toggling images when the radio button is checked and unchecked jquery
我在这样的图像中包裹了单选按钮
<div class = " monthly-radio-div padding-lr-zero radio-inline">
<input type="radio" name="inv_type" id="monthly" value = "monthly" >
<label for="monthly">
<span class="radio">
<img src="icons/r_dis.png">
</span>
</label>
</div>
<div class = " future-radio-div padding-lr-zero radio-inline">
<input type="radio" name="inv_type" id="future" value = "future" >
<label for="future">
<span class="radio">
<img src="icons/r_dis.png">
</span>
</label>
</div>
单击单选按钮时, label
内的图像将更改。 我已经做完了。 这里的问题是,单击单选按钮后,图像变化完美,但是单击其他单选按钮时,图像不会返回其默认图像。 这样,未选中的无线电也看起来像已选中。 我有两张图片,一张代表选中的收音机,另一张代表选中的收音机。
$('.monthly-radio-div input').on('change', function() {
var parentDiv=$(this).parents(".monthly-radio-div:eq(0)");
if($(this).is(":checked")){
$(parentDiv).find("img").attr("src","https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png");
}
else{
$(parentDiv).find("img").attr("src","https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png");
}
});
这是代码的小提琴
首先,您没有将jQuery
添加到您的小提琴项目中。 另外,您要对其应用src
更改的img
元素的引用img
正确。 其次,您没有在小提琴中提供“其他”单选按钮。
$('#monthly, #future').on('change', function() { if ($('#monthly').is(":checked")) { $('.radio').find(".first").attr("src", "https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png"); $('.radio').find(".second").attr("src", "https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"); } else { $('.radio').find(".first").attr("src", "https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"); $('.radio').find(".second").attr("src", "https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png"); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class=" monthly-radio-div padding-lr-zero radio-inline"> <input type="radio" name="inv_type" id="monthly" value="monthly"> <label for="monthly"> <span class="radio"> <img class='first' src="https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"> </span> </label> </div> <div class=" monthly-radio-div padding-lr-zero radio-inline"> <input type="radio" name="inv_type" id="future" value="monthly"> <label for="future"> <span class="radio"> <img class='second' src="https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"> </span> </label> </div>
我的建议是:
片段:
$('.monthly-radio-div :radio').on('change', function(e) { var parentDiv = $(this).closest(".monthly-radio-div"); var currImg = parentDiv.find("img").attr("src"); var otherImg = parentDiv.siblings(".monthly-radio-div").find("img").attr("src"); if (currImg == otherImg) { otherImg = "https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png"; } parentDiv.find("img").attr("src", otherImg); parentDiv.siblings(".monthly-radio-div").find("img").attr("src", currImg); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class = "monthly-radio-div padding-lr-zero radio-inline"> <input type="radio" name="inv_type" id="monthly" value = "monthly" > <label for="monthly"> <span class="radio"> <img src="https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"> </span> </label> </div> <div class = "monthly-radio-div padding-lr-zero radio-inline"> <input type="radio" name="inv_type" id="future" value = "monthly" > <label for="future"> <span class="radio"> <img src="https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"> </span> </label> </div>
它不是在听广播中未被点击的更改,因此每次if语句为真时,
您必须手动将图像更改回默认设置,然后更新单击的收音机旁边的图像
尝试:
if($(this).is(":checked")){ $('.monthly-radio-div img').attr("src","https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png");
$(parentDiv).find("img").attr("src","https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png"); }
(您可以删除else
语句)
但是,您可以使用CSS更简单地做到这一点:
input[type="radio"] + label span img{ background: url("https://cdn1.iconfinder.com/data/icons/toggle/512/radio-off-128.png"); } input[type="radio"]:checked + label span img{ background: url("https://cdn1.iconfinder.com/data/icons/toggle/512/radio-on-128.png"); }
(除非您必须使用jQuery)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.