【问题标题】:Jquery Image Radio Buttons not switchingJquery图像单选按钮不切换
【发布时间】:2013-08-17 04:29:46
【问题描述】:

我有几个使用图像作为屏幕显示的单选按钮。常规状态、悬停状态和单击状态。图像显示在每个州,但如果我点击 2 单选按钮,两者都保持点击状态。我怎么能有它或者点击时。

这里是 jquery:

$(".image_radiobtn input[type='radio']").change(function(){
    if($(this).is(":checked")){
       $(this).next("label").removeClass('hover').addClass('checked');          
    }
    else{
       $(this).next("label").removeClass('checked');
    }
});

这里是html:

         <ul id="radiobtn-toggle-view" class="image_radiobtn">
          <li>
           <input id="input-1" type="radio" name="address" value="1" /> 
           <label for="input-1">Use this address.</label>
          </li>
         </ul>       

这是css:

#radiobtn-toggle-view, #radiobtn-toggle-view2 {
list-style: none;
margin: 0;
position: relative;
cursor: pointer;
}

#radiobtn-toggle-view li, #radiobtn-toggle-view2 li{
min-height: 15px;
height: 15px;
margin:0;
padding: 10px 0;  
}

#radiobtn-toggle-view label, #radiobtn-toggle-view2 label {
cursor: pointer;
font-size: 14px;
font-weight: bold;
height: 15px;
line-height: 15px;
margin: 0;
text-decoration: none;
}
.image_radiobtn li input[type='radio']{
display:none;
}

.image_radiobtn li label {
background: url(/images/icons/grey_radio_btn.png) no-repeat;
padding-left: 20px;
}

.image_radiobtn li label:hover { 
background: url(/images/icons/e_radio_btn.png) no-repeat;
}

.image_radiobtn li label.checked {
background: url(/images/icons/g_radio_btn.png) no-repeat;
}


.hidden {display: none;}

【问题讨论】:

  • 它们是否都具有相同的name 属性/属性? (如果它们是互斥的,它们应该是。)但是你也没有检查删除你正在添加的类,我怀疑这是实际的问题。
  • 尝试将 if($(this).is(":checked")) 更改为 if($(this).val(":checked"))
  • nilzone - 没用。
  • 大卫是什么意思?你的意思是名称=“地址”。如果是这样,对于这种情况,那么是的。

标签: jquery radio-button


【解决方案1】:

在您的 Jquery 代码中添加一个新类之前,您需要清除所有选中的类。 PS:根据您的层次结构更改选择器,以获取组中的所有收音机。

$(".image_radiobtn input[type='radio']").change(function(){
    $('selector').removeClass('checked');
    if($(this).is(":checked")){
       $(this).next("label").removeClass('hover').addClass('checked');          
    }
    else{
       $(this).next("label").removeClass('checked');
    }
});

【讨论】:

  • madaaah - 您的意思是将选择器更改为 div 或 ul 的 html 中的 id 或类?我只是厌倦了你的代码,它对我不起作用。我猜是因为我没有更改选择器。
  • 我的意思是,使用一个选择器来获取所有属于同一组的单选按钮...例如,如果它们都在该 ul 中,请尝试 $('#radiobtn-toggle-查看输入[type='radio']').removeClass('checked');
  • 但是,当然,从添加它的同一位置删除该类。
  • 我试过了,但它对我不起作用。 $(".image_radiobtn input[type='radio']").change(function(){ $('#radiobtn-toggle-view input[type='radio']').removeClass('checked'); 如果($(this).is(":checked")){ $(this).next("label").removeClass('hover').addClass('checked'); } else{ $(this).next ("label").removeClass('checked'); } });
  • 也许我说得不够清楚。单击单选按钮时,它们会起作用。它们显示已单击,但如果我单击另一个,它也会保持单击状态,而不是取消选中第一个单选按钮。
猜你喜欢
  • 2020-05-20
  • 1970-01-01
  • 2014-11-30
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多