2011-09-24 80 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注意到錯字。據此編輯答案。 –