Javascript 改进AJAX响应处理功能

Javascript 改进AJAX响应处理功能,javascript,jquery,ajax,optimization,Javascript,Jquery,Ajax,Optimization,此代码处理来自RSS提要的响应。它对内容进行组织和附加。如果嵌入了视频,则将其与其他内容分开。我希望主要就绩效/效率进行审查,但我也愿意接受任何其他建议。那个星型选择器真的让我头疼,但我不知道有什么更好的方法可以迭代所有包含的元素 function getFeed(url, element, callback) { $.getJSON("https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&

此代码处理来自RSS提要的响应。它对内容进行组织和附加。如果嵌入了视频,则将其与其他内容分开。我希望主要就绩效/效率进行审查,但我也愿意接受任何其他建议。那个星型选择器真的让我头疼,但我不知道有什么更好的方法可以迭代所有包含的元素

function getFeed(url, element, callback) {
    $.getJSON("https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q="+encodeURIComponent(url), function(response) {
        var content = "",
            $element = $(element);

        for (var i = 0; i < response.responseData.feed.entries.length; i++) {
            content = content + response.responseData.feed.entries[i].content; //Join all the feed entries
        }

        $element.find(".content").html(content).addClass($element.find("embed").length? "withVideo" : "");

        $element.find("*").each(function() {
            var $this = $(this);

            $this.removeAttr("style width align"); //Reset all the crap that comes with the response

            if ($this.is("embed")) {
                $element.append("<div class='video'></div>");
                $this.attr("width", 640).attr("height", 360).parent().appendTo(element + " .video");
            };
        });

        if (typeof callback === 'function') {
            callback();
        };
    });
}
下面是一个响应的样子

<div width="500" style="whatever"><p>Some text blah blah blah.</p>
<p align="right">Some more text</p>
</div>
<div><h2>Video Title</h2>
<embed src="http://..." width="360" height="202" type="application/x-shockwave-flash"></embed>
<small>Watch the 7th annual Tech Expo highlights.</small></div>
一些文字废话废话

更多文本

视频标题 观看第七届年度科技博览会的精彩节目。
首先:不要在for语句中使用“.length”。这样,它将在循环中的每个过程中计算项目数

var responseCount = response.responseData.feed.entries.length;
for (var i = 0; i < responseCount, i++) {
...
}
你绝对可以优化这个

性能/效率通常比单功能更高。如果使用不当,jQuery可能会导致性能大幅下降。 根据项目的范围,您可以尝试以下操作:

  • 考虑jquery2.*版本,它更小更快(但缺乏向后兼容性)
  • 考虑使用jQuery的自定义构建
  • 应用程序作用域中的浏览器是否支持querySelector?如果是这样,您甚至可能不需要jQuery
  • 考虑懒散地加载代码脚本,以加快页面的加载速度
本网站包含了一个非常好的清单供进一步阅读: 首先:不要在for语句中使用“.length”。这样,它将在循环中的每个过程中计算项目数

var responseCount = response.responseData.feed.entries.length;
for (var i = 0; i < responseCount, i++) {
...
}
你绝对可以优化这个

性能/效率通常比单功能更高。如果使用不当,jQuery可能会导致性能大幅下降。 根据项目的范围,您可以尝试以下操作:

  • 考虑jquery2.*版本,它更小更快(但缺乏向后兼容性)
  • 考虑使用jQuery的自定义构建
  • 应用程序作用域中的浏览器是否支持querySelector?如果是这样,您甚至可能不需要jQuery
  • 考虑懒散地加载代码脚本,以加快页面的加载速度
本网站包含了一个非常好的清单供进一步阅读:

为什么不使用jQuery选择器(甚至indexOf)来查找嵌入标记,而不是在每个节点上循环?@Diodeus我会,但我需要循环每个元素以消除响应中的混乱。为什么不使用jQuery选择器(甚至indexOf)要找到嵌入标记而不是遍历每个节点?@Diodeus我会,但我需要遍历每个元素以消除响应中的混乱。
$element.find("*")