Should I use jQuery.each()?

前端 未结 5 1699
情歌与酒
情歌与酒 2020-12-05 04:45

I\'m doing very frequent iterations over arrays of objects and have been using jQuery.each(). However, I\'m having speed and memory issues and one of the most called methods

5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-05 05:26

    This method should give you a dramatic speed improvement.

    var elements = $('.myLinks').get(), element = null;
    for (var i = 0, length = elements.length; i < length; i++) {
        element = elements[i];
        element.title = "My New Title!";
        element.style.color = "red";
    }
    

    Caching will also improve performance.

    function MyLinkCache() {
        var internalCache = $('.myLinks').get();
    
        this.getCache = function() {
            return internalCache;  
        }
    
        this.rebuild = function() {
            internalCache = $('.myLinks').get();
        }
    }
    

    In use:

    var myLinks = new MyLinkCache();
    
    function addMyLink() {
        // Add a new link.
        myLinks.rebuild();
    }
    
    function processMyLinks() {
        var elements = myLinks.getCache(), element = null;
        for (var i = 0, length = elements.length; i < length; i++) {
            element = elements[i];
            element.title = "My New Title!";
            element.style.color = "red";
        }
    }
    

提交回复
热议问题