2015-01-15 46 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