【问题标题】:Is it Efficient?高效吗?
【发布时间】:2015-03-13 10:34:03
【问题描述】:

我有数据 Json。我在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

循环。我想让它更快地处理。这是最好的方法吗?

【问题讨论】:

  • 优化的第一点是将jQuery('#' + objData[i].noSeat)放入一个变量中。
  • 我想它会和我的方式一样。它只是缩短代码而不是过程
  • 这样可以节省您每次执行jQuery('#' + objData[i].noSeat)时jQuery搜索元素所花费的时间。
  • 您可能还想链接它们 - .addClass().removeClass() - 如果您已经在使用变量,则不会提高性能。也最好做一个 removeClass('seat-booked selected')
  • 这个问题属于Code Review,因为没有具体问题。

标签: jquery arrays ajax for-loop conditional-statements


【解决方案1】:

你可以试试我在

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

编辑:修正我的错误,如果只有手机有自动更正。 我只是说我认为 for-in 循环比 for 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');
}

for-in 查看 objData 中的每个元素,类似于 i=0;我

【讨论】:

  • 对不起,我无法得到您的答案,请您进一步解释一下
  • 条件怎么样?
  • 很抱歉,我之前的意思是我认为 for-in 循环的开销比for (i=0;i&lt;length;i++) 部分要少一些,不确定我用 if 部分抽了什么...... . 很抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多