2015-01-15 85 views
0

我有數據JSON在aray。我在ajax中反序列化。 我想要從類中更改類,如果它有'預訂'類。這樣寫是否高效?它是否有效?

$.ajax({ 
    url: "URL.aspx/GetData", 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 

    success: function (response) {    
     var arr = JSON.parse(response.d);   
     objData = new Array(); 
     objData = arr; 
     for (i = 0; i < objData.length; i++) { 

      if (jQuery('#' + objData[i].noSeat).hasClass('seat-booked')) 
      { 
       jQuery('#' + objData[i].noSeat).addClass('seat-availiable');      
       jQuery('#class-' + objData[i].noSeat).attr('value', 'seat-availiable'); 
       jQuery('#' + objData[i].noSeat).removeClass('seat-booked'); 
       jQuery('#' + objData[i].noSeat).removeClass('selected'); 
      }     
     }   

我把

if

聲明

for

循環。我想讓它更快處理。這是最好的方法嗎?

+2

優化的第一點是將'jQuery('#'+ objData [i] .noSeat)'放在一個變量中。 –

+0

我認爲它會和我一樣。它只是縮短代碼而不是進程 – azalikaEriya

+1

它會爲您節省每次執行jQuery('#'+ objData [i] .noSeat)時jQuery搜索元素所花費的時間。 –

回答

0

你可以在

for (var I in objData) { 
    objData[I] // stuff 
} 

編輯嘗試我:固定我的錯誤,如果只有手機有自動更正。 我只是說我認爲for-in循環比i = 0更好;我的長度爲<;我++風格的循環。

爲了彌補這個缺點,如果它失敗:)

for (i in objData) { 
    jQuery('#' + objData[i].noSeat + '.seat-booked') 
     .addClass('seat-availiable') 
     .removeClass('seat-booked selected') 
     .closest('#class-' + objData[i].noSeat) 
     .val('seat-availiable'); 
} 

換在着眼於在objData每個元素和類似於I = 0我會盡力暗示這個未經測試的代碼和downvote我。 i < l;我++;但似乎它減少了分配。 Jquery('selector')可以採用多種條件,如果ID和類之間沒有空格,如'#'+ objData [i] .noSeat +'.seat-booked',則它需要返回對象。然後,所有添加/刪除的東西可以被添加到返回的對象。如果沒有對象返回,鏈中的其他任何東西都不能執行,所以沒有任何反應。

+0

對不起,我很難得到你的答案,你可以請進一步解釋 –

+0

條件怎麼樣? – azalikaEriya

+0

對不起,我之前的意思是,我認爲for-in循環比'for(i = 0; i