English 中文(简体)
j 高等专科学校的选修太慢
原标题:jQuery selectors too slow in IE
最佳回答

你们正在经营一个挑选人业务的避风港,每个业务都效率不高,特别是在老的浏览器中。

最好由一个选择人操作,并在一个行动中处理所有选择价值。 你们可以这样做,为给你适当的类别名称的选项值建立一个研究表。 这里就是一个例子。 我在整个表格中填满了很多打字(你可以打上其余部分),但这里却看它如何工作。

这应当比你更快得多(或许比你更快100倍):

    // class names used for various options
    var optionClasses = [
        "ART - LETTRES - SPECTACLE",
        "ECONOMIE",
        "ETRANGER"
    ];
    // the number in the option map corresponds to an array index 
    // in the optionClasses array.  This is done to avoid repeating
    // the same string over and over
    var optionMap = {
         ART - LETTRES - SPECTACLE : 0,
         A la une ALS : 0,
         Cirque  : 0,
         Festival multidisciplinaire : 0,
         Littérature-édition : 0,
         Musique classique : 0,
         Photographie : 0,
         Cinéma : 0,
        /* .... */
         ECONOMIE : 1,
         A la une Economie : 1,
        /* ... */
         ETRANGER : 2,
         A la une Etranger : 2
        /* fill in the rest of the data here */
    };

    jQuery("select option").each(function() {
        if (this.value && this.value in optionMap) {
            var clsNum = optionMap[this.value];
            $(this).addClass(optionClasses[clsNum]);
        }
    });

它很简单,应该比你以前更快地开展许多工作。 它有一个挑选人操作,然后使用一个洗衣桌,寻找特定选择价值的适当类别名称。

问题回答

这类挑选器在燃烧中似乎也很缓慢。

我会猜测“[选择价值=......]”部分造成 j,以扫描整个文件中寻找对应内容的所有内容。 每个选任人中每一名[m]/em>(从......到......)。 这一工作很多。

我有一只dle子,发现在火ox中,如果我使用这样的方法,它会更能作出反应:

var options = $("option");
var $XXX = options.filter("[value=VALUE1], [value=VALUE2], [value=VALUE3]");
// etc

这样做首先会产生一个只包含某些选择的分类物体/收集,然后从那里使用挑选器过滤所需选择。

修改你的法典以使用这种方法。

根据我的理解,你的守则是把选择放在第一种选择的基础上。

大量人员在人力部工作。 而不是装设一个异常长的多功能元件,而是将数据作为阵列和物体储存,并在必要时装载。 这样一来,这些选择就算不了。

//storing second options as objects and arrays
var second = {
    art : [
        {text: artOption1Text ,value: artOption1Value },
        {text: artOption2Text ,value: artOption2Value },
        {text: artOption3Text ,value: artOption3Value }
        ...
    ],
    social : [
        {text: socialOption1Text ,value: socialOption1Value },
        {text: socialOption2Text ,value: socialOption2Value },
        {text: socialOption3Text ,value: socialOption3Value }
        ...
    ]
    ...
}

var secondSelect = $( secondselect );          //reference your second select

$( firstselect ).on( change ,function(){       //on change of first select
    var newOptions = second[this.value];       //get the new values

    secondSelect.children().remove();          //remove current options

    $.each(newOptions,function(index,option){ //add the new options

        $( <option> )
            .attr( value ,option.value)
            .text(option.text)
            .appendTo(secondSelect);
    });
}




相关问题
What to look for in performance analyzer in VS 2008

What to look for in performance analyzer in VS 2008 I am using VS Team system and got the performance wizard and reports going. What benchmarks/process do I use? There is a lot of stuff in the ...

SQL Table Size And Query Performance

We have a number of items coming in from a web service; each item containing an unknown number of properties. We are storing them in a database with the following Schema. Items - ItemID - ...

How to speed up Visual Studio 2008? Add more resources?

I m using Visual Studio 2008 (with the latest service pack) I also have ReSharper 4.5 installed. ReSharper Code analysis/ scan is turned off. OS: Windows 7 Enterprise Edition It takes me a long time ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

热门标签