2011-09-24 57 views
1

我有一个超过2500个锚标记的页面进行处理。现在在IE中它是抛出停止脚本错误。是否可以按批处理?以500执行它,然后采取另一个500执行它?如何避免在浏览器中停止脚本错误

这是代码...

ajaxLinks : function(el, flag) { 
    var links = $(el).find('a'); 
    var notLinkAr=["a[href^=javascript]","#toolbarId ul li>a","#tool_settings .link a",".page-action-links li>a","#tool_settings .label a",".success-map .success-tabs li>a",".success-map .sm_loggedin li>a", ".analyst_cat li>a",".modal",".layer",".newpage",".close",".hideFromPopup",".pagenum",".next",".prev",".delete_src",".tips","#hidr","#backr"]; 
    $(notLinkAr).each(function(index){ 
     var notLinkI=$(notLinkAr[index]); 
     if($(notLinkI).is("a")){ 
      if($(notLinkI).length>0){ 
       $(notLinkI).each(function(index1){ 
         $(notLinkI[index1]).addClass("dontAjaxify"); 
       }); 
      } 
     } 
    }); 
    $(links).each(function(i, obj){ 
     var link = $(obj); 
     if(!$(obj).hasClass('dontAjaxify')){ 
      link.attr('rel', link.attr('href')); 
      var rellnk = link.attr('rel'); 
      if(flag=='ajaxified') { 
       if(/http/.test(rellnk)){ 
        var relurl; 
        relurl=rellnk.replace((window.location.protocol + "//"+ window.location.hostname),'') 
        link.attr('rel', relurl);; 
       } 
      } 
      link.bind('click', function(e){} 

荫添加类的所有锚标签(这是2500)在一个页面。

+0

什么脚本针对一个标签运行? – Baz1nga

+0

使用jquery运行它 – Harry

+0

请添加sm代码..问题是抽象的,否则... – Baz1nga

回答

1

jQuery的.slice可以帮助你。 http://api.jquery.com/slice/

var count = 0; 
var ajaxify = function (el, flags) { 
    var links = $(el).find('a').slice(count, count + 500); 
    count = count + 500; 

    // Do the processing here 

    if (links.length) { 
     // Call it next time only if some data is returned in the current call 
     setTimeout("ajaxify()", 5000); 
    } 
} 

上面的代码没有进行测试,但是可能工作。

+0

另外,您还可以进行一些更改以提高性能。 例如: 1.您可以使用选择器仅获取具有所需类别的链接,而不是在所有“链接”上运行循环,然后应用if条件。如:var links = $(el).find('a.dontAjaxify'); 2. addClass()可以直接应用到完整的集合。所以,不需要.each()。你可以有$(notLinkI).addClass(“dontAjaxify”) –

+0

据我所知,'... slice(count,count + 499)'应该读为'count + 500',因为结束参数被描述为_up但不包括element_。因此,对于元素0 - > 499(含),您需要'slice(0,500)'。 – GKelly

+0

感谢@GKelly注意到错字。据此编辑答案。 –