我正在使用 CSS 来重新设置一个广播组的样式,如下所示:
这是通过将实际输入(按钮)隐藏在标签标签内,然后display:none
在 CSS 中将输入本身设置为,并将标签本身设置为按钮来完成的,如下所示:
<label for="likert1" class="likert">
<input type="radio" id="likert1" name="patientViewGroup" value="1">
1
</label>
这一切都可以用 CSS 来完成......但是因为一些浏览器(我在看你,IE8 及以下版本)不识别:checked
伪类,这样做的方式就是你的实际输入 - 这就是将通过表单中的值 - 并不总是注册它被检查,所以 JQuery 来救援。
我现在使用 JQuery 在单击其中一个标签时设置 addClass“.amClicked”,此时它还将收音机的“checked”属性切换为“true”,并从兄弟姐妹中删除“amChecked”类。容易,对吧?这是 JQuery 代码:
$('.likert').on("click",function() {
console.log("clikcy!");
if(!$(this).hasClass('amChecked')) {
$(this).addClass("amChecked");
$(this).children(":radio").attr("checked",true).css("display","none");
}
$(this).siblings().removeClass("amChecked")
.children(":radio").css("display","none");
});
好吧,它会是,除了 JQuery,出于某种原因,似乎一心想要将内联“样式”标签添加到我<input>
的覆盖我的display: none;
并取消隐藏单选按钮本身,如下面的 #3:
这是点击后输入代码的样子:
<input type="radio" id="likert3" name="patientViewGroup" value="3"
checked="checked" style="display: inline-block; " class="amChecked">
更糟糕的是,添加.css("display","none")
到我的点击代码(如您在上面看到的)不会覆盖它 - 按钮仍然显示。如果我不将其添加到 removeClass 行,则该按钮将保留在那里,未选中,如下所示:
所以 - 谁能告诉我为什么 Jquery 不请自来地添加到我的代码中,我能做些什么来阻止或覆盖它吗?任何帮助将不胜感激!