【问题标题】:AddClass RemoveClass acts different on browsersAddClass RemoveClass 在浏览器上的行为不同
【发布时间】:2019-09-03 18:03:09
【问题描述】:

您好,我已经查看了很多。有很多类似的问题,但找不到我的答案。

我有两个复选框如下:

<div class="custom-chk">
  <label>
    <input name="Residential" id="Residential" class="upsfilter" type="checkbox" />
    Residential
  </label>
</div>
<div class="custom-chk">
 <label>
   <input name="Commercial" id="Commercial" class="upsfilter" type="checkbox" />
   Commercial
 </label>
</div>

我选中/取消选中以下内容:(如果一个选中另一个取消选中)

$('.upsfilter').on('click', function (e) {
 if ($(this).prop('checked')) {
 $('.upsfilter').prop('checked', false);
 $('.upsfilter').parent().removeClass('checked');
 $(this).prop('checked', true);
 $(this).parent().addClass('checked');
 }
)};

$('.upsfilter').on('click', function(e) {
    if ($(this).prop('checked')) {
      $('.upsfilter').prop('checked', false);
      $('.upsfilter').parent().removeClass('checked');
      $(this).prop('checked', true);
      $(this).parent().addClass('checked');
    }
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="custom-chk">
  <label>
        <input name="Residential" id="Residential" class="upsfilter" type="checkbox" />
        Residential
      </label>
</div>
<div class="custom-chk">
  <label>
       <input name="Commercial" id="Commercial" class="upsfilter" type="checkbox" />
       Commercial
     </label>
</div>

label class="checked" 在复选框中显示小自定义方块。

上面的代码:

a) 火狐、Chrome。选中/取消选中有效,但 label class="checked" 工作相反。 (勾选时显示方块为假)

b) IE 11 工作正常

但是如果我删除$(this).parent().addClass('checked');

Firefox 和 Chrome 工作正常,但 IE 做同样的事情 (a)

是否存在与 IE、Chrome 或 Firefox 的兼容性问题? IE反应更有意义。任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 我在这里假设您的 JavaScript 拼写错误/语法问题只是这里的复制/粘贴问题?
  • @MarkSchultheiss 哪个部分?
  • 运行sn -p 我把代码放进去,看到错误
  • 哦,是的。修复。谢谢。

标签: jquery html checkbox cross-browser


【解决方案1】:

您可以使用附加事件的目标,然后切换类。 重新阅读后,我发现您想要 label 和班级,所以我对其进行了调整>

此外,您需要使用change 事件,因为并非所有更改它的操作都是点击。

$('.custom-chk').on('change', '.upsfilter', function(event) {
  let me = $(this);
  let isChecked = me.prop("checked");
  let checks = $('.upsfilter');
  checks.not(me).prop('checked', false);
  checks.closest('label')
    .toggleClass('checked', false);
  checks.filter(':checked').closest('label')
    .toggleClass('checked', true);
});
.checked {
  border: solid red 1px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="custom-chk">
  <label>
    <input name="Residential" id="Residential" class="upsfilter" type="checkbox" />
    Residential
  </label>
</div>
<div class="custom-chk">
  <label>
   <input name="Commercial" id="Commercial" class="upsfilter" type="checkbox" />
   Commercial
 </label>
</div>

【讨论】:

  • '我选中/取消选中以下复选框:(如果一个选中另一个取消选中)'明确指出如果选中一个,则另一个应该取消选中。它从未说过取消选中并选中另一个复选框,DV sry
  • 很奇怪。现在有了这个,firefox、chrome 和 IE 都在做相反的事情。
  • 我在 Chrome 和 Fox 中测试过,它们都是一样的,当检查时它们有红色边框,当没有时,它们没有。检查另一个它取消选中并取消上一个检查的边界。
【解决方案2】:

我使用is(':checked') 检查是否选中了复选框,并使用closest('.custom-chk').siblings().find('.upsfilter') 查找下一个和上一个出现的复选框。 希望这就是你要找的,谢谢

$('.upsfilter').click(function(e){
if($(this).is(':checked'))
 {
   $(this).parent().addClass('checked');         //Adding class to current checkbox
   var check =$(this).closest('.custom-chk').siblings().find('.upsfilter')
   check.prop('checked',false)
   check.parent().removeClass('checked')        //Removes class of other checkbox
 
 }
 else
  $(this).parent().removeClass('checked');  

})
.checked
{
 color:red

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="custom-chk">
  <label>
    <input name="Residential" id="Residential" class="upsfilter" type="checkbox" />
    Residential
  </label>
</div>
<div class="custom-chk">
 <label>
   <input name="Commercial" id="Commercial" class="upsfilter" type="checkbox" />
   Commercial
 </label>
</div>

【讨论】:

  • 如果它是联合国检查这不会删除类
  • 好吧,如果我运行这个,点击查看它会变成红色,如果我取消选中它会保持红色
猜你喜欢
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多