name为aa的span有数十个到上百个之多,用
var allObj=document.getElementsByName("aa");
for(j=0;j<allObj.length;j++)
{
    allObj[j].style.display="none";
}
没有问题.改为使用JQuery的
var allObj=$('[name=aa]');
allObj.hide();
后,在性能较差的电脑上用IE测试,出现"是否停止运行此脚本?此页面上的脚本造成Internet Explorer运行速度减慢.如果继续运行,您的计算机将可能停止响应.".请问,这种情况JQuery如何能提高运行效率?谢谢.

解决方案 »

  1.   

    楼主试下这样下
    var allObj=$('[name=aa]');
    for(var i=0;i<allObj.length;i++){
        allObj.eq(i).hide();
    }
      

  2.   

    try:$('span[name=aa]').hide();我不知道为什么会有这样的性能缺失。我先去试试吧~
      

  3.   

    我用了3K个span测试了下。没有问题
    IE6 + 256MB内存。开了mcAfee
      

  4.   

    按照标签进行了测试,数据为3000和10000条,感觉两种方法时间上相差不多,IE6测试!
    代码如下:<body>
    <span id="sp"></span>
    <div id="xs"></div>
    </body>
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script>
    var d1=new Date().getTime();
    var str="";
    for(var i=0;i<10000;i++)
    {
    var d='<a href="http://www.baidu.com">'+i+'</a><br/>';
    str=str+d;
    }
    var d2=new Date().getTime();
    document.getElementById('xs').innerHTML=str;var allObj=document.getElementsByTagName("a");
    var le=allObj.length;
    for(j=0;j<le;j++)
    {
      allObj[j].style.display="none";
    }//$('a').hide();var dd=d2-d1;
    document.getElementById('sp').innerHTML=dd;
    </script>
      

  5.   

    个人认为能不能jQuery的地方就不用吧,在这种情况下还有比直接用var allObj=document.getElementsByName("aa");取得对象更快的么?
      

  6.   

    结合自己的当前需求,应该不会有太多的name=aaa的标签
    如果很多可以在循环里面放一个setTimeout延时下