jQuery修改按鈕沒法選中,可是不能生效的問題

2019.9.11工做記錄javascript

事項表中:expressFlag字段,0表示快遞,1表示不快遞html

如今須要在頁面上,若是是不支持物流快遞的事項,那麼按鈕就變成不可選中狀態java

對應頁面的處理:經過JQuery設置<input>屬性爲disabledexpress

<script type="text/javascript">
if(${service.expressFlag == '0'}){
	$("#notNeed").attr("disabled",true);
	$("#need").attr("disabled",true);
}else{
	$("#notNeed").removeAttr("disabled",true);
	$("#need").removeAttr("disabled",true); 
	/* $("#notNeed").attr("disabled",false);
	$("#need").attr("disabled",false); */
}
<script/>
</head>
<body>
</body>

可是發現,按鈕只是樣式變了可是仍是能夠選中(後來是能夠添加禁用屬性,可是不能移除。而後把條件改成1,發現仍是沒有變化,不能移除)瀏覽器

後來把js代碼放在後面緩存

</head>
<body>
</body>
<script type="text/javascript">
if(${service.expressFlag == '0'}){
	$("#notNeed").attr("disabled",true);
	$("#need").attr("disabled",true);
}else{
	$("#notNeed").removeAttr("disabled",true);
	$("#need").removeAttr("disabled",true); 
	/* $("#notNeed").attr("disabled",false);
	$("#need").attr("disabled",false); */
}
<script/>

就能夠正常使用。性能

PS:正常之後我再把js代碼放到前面,他又能夠正常禁用/取消禁用(我清理過瀏覽器緩存了)code

緣由猜想:因爲頁面加載順序致使。htm

正常網頁加載的順序:blog

1 瀏覽器一邊下載html網頁,一邊開始解析.

2解析過程當中,若發現script標籤,暫停解析,網頁渲染的控制權交給js引擎. 

3 若是scirpt引用了外部腳本,就下載該腳本,不然直接執行.

4.執行完畢,控制權交還給js渲染引擎.恢復往下解析html網頁.
--------------------------------------------------------------------

1.在html中 body部分中的js會在頁面加載的時候被執行.

2.在html中head中的js會預先進行加載,反而會在頁面須要調用的時候纔會執行代碼,因此能夠將預先不執行的代碼放在head中.

3.需調用先執行的時候把js放在head中,在head頁面載入的時候,就同時載入了代碼,在body中調用的時候就不用載入代碼,速度會提升.

4.若是head中的js代碼須要傳入一個參數,須要body中的參數,那麼這時候就會報錯,由於此時頁面的DOM樹還未生成.

5 從js對頁面下載性能方向考慮. 因爲腳本會阻塞其餘資源的下載,如圖片和頁面渲染,直到腳本所有被下載並執行完畢後,頁面的渲染纔會繼續,所以推薦將全部的script標籤放到底部.

相關文章
相關標籤/搜索