我使用CSS再整一個像這樣的單選按鈕組:爲什麼JQuery會將內聯樣式添加到我的html中?
它被隱藏嵌套的標籤,標籤內的實際輸入(按鈕),然後輸入自己設置爲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線,該按鈕就停在那兒,不加制止,像這樣:
SO - 誰能告訴我,爲什麼jQuery是添加此,不速之客,我的代碼,並且我有什麼可以阻止或覆蓋它的嗎?任何幫助將不勝感激!
你可以創建一個jsFiddle的例子嗎? – j08691 2013-04-05 13:53:29
您正在添加'.amChecked'而不是'.amClicked' – kidwon 2013-04-05 13:54:27
您不應該使用'display:none'來隱藏單選按鈕。使用'position:absolute;左:-10000px;'而是。 IE不會對單選按鈕或複選框上的「點擊」事件進行處理,這些事件通過'display:none'或'visibility:hidden'顯式隱藏。 – Pointy 2013-04-05 13:56:43