1. 程式人生 > 其它 >jq 實現單選框後面可輸入內容 參考資料

jq 實現單選框後面可輸入內容 參考資料

參考資料:https://www.cnblogs.com/xiaozhuyuan/p/7542158.html

現象:attr設定checked值顯示不正確

$("input[type=radio][value='']").attr("checked","checked");
$("input[type=radio][value='']").attr("checked",true);

兩者在html上的修改一致,但是頁面上的顯示沒有更新。

<input type="radio" name="reporttype" value="" checked="checked">

測試改為 

 $("input[type=radio][value='']").prop("checked",true);

相當於  

$("input[type=radio]")[0].checked=true;

設定checked後html改為:

頁面顯示也正確。

原因:這裡涉及兩個概念 特性(attribute) 和屬性(Property)。

attribute是dom節點自帶的屬性,如id,class,自定義放在html 標籤內的屬性(customattr)等,放在dom物件的attributes屬性中,這個屬性的型別是NamedNodeMap。

property是dom元素作為物件,其附加的內容,如childnodes,firstchild等,直接在物件上,部分attribute特性如id,checked,disabled等會被新增到元素物件上,作為dom屬性。

用.attr()操作 一般只更改了 attributes中的屬性值,如果這個屬性是dom元素的一個特性屬性的話,沒有改到對應的特性,特性是內部實現某些功能的參照,比如 radio 的checked 特性未改,顯示的選擇狀態也沒有及時更新到。

注:對於當前dom元素有的特性使用.prop()進行操作,而對於沒有對應特性的普通屬性使用.attr()操作就可以了。