2012-04-12 67 views
1

我正在使用jQuery中的replaceWith()函數來更新我的網頁。我從C#Web服務程序接收數據,該程序從數據庫提取數據以構建我的HTML代碼。它工作正常,除非我更換大量的數據。在不起作用的示例中,我用39000字節的數據替換了我的網頁中的代碼。之後,當點擊跨度調用JavaScript函數時,我的鏈接都不起作用。 replaceWith()函數中使用的數據大小是否有限制? HTML代碼我更換看起來像這樣:jQuery中使用replaceWIth的數據大小是否有限制?

<td align=left valign=top> 
<div id="showitems" class="showitems" style="display:inline; float:left"></div> 
</td> 

的JavaScript代碼如下所示:

function ShowDinerItems() { 

      var gps = document.getElementById("selectdiner").value; 
      var pos = gps.indexOf(";"); 
      var len = gps.length; 
      var latitude = document.getElementById("Hiddenlat").value; 
      var longitude = document.getElementById("Hiddenlng").value; 
      var dinerkey = gps.substring(0, pos); 
      PageMethods.CallShowDinerItems(dinerkey, latitude,longitude,    OnShowDinerComplete, OnShowDinerError, dinerkey); 
     } 

    function OnShowDinerComplete(result) { 
     var htmlcode = result[0]; 
     if (result == 'none') { 
       document.getElementById("Message").value = "Search returned no items"; 

      } 
      else { 
       var htmlcode = result[0]; 
       htmlcode = "<div id=\"showitems\" class=\"showitems\"   style=\"display:inline\">" + htmlcode + "</div>"; 
       $('.showitems').replaceWith(htmlcode); // size of htmlcode is 39849 bytes 
       var locations = result[1].split(";"); 
       var lat = locations[0]; 
       var lng = locations[1]; 
       markDiner(lat, lng, "", 'map_canvas'); 

      } 
     } 

我使用jQuery建立我的網頁的原因是爲了避免重新加載頁面。我可以很容易地在我的C#程序中編寫web數據內容,這可能會更有效,但是頁面重新加載應避免按照擁有該網站的人員的指示。我會嘗試給出的建議。

注意:我使用下面的代碼使其工作。

$('.showitems').html(result[0]); 

使用.text將不起作用,因爲它顯示原始數據而不是html數據。感謝那些貢獻。

+2

讓我們看看一些壞HTML。 – 2012-04-12 23:45:48

+1

你如何約束你的事件?你在使用委託處理程序嗎?這些委託處理程序是否被替換? – 2012-04-13 00:04:44

+1

我不擔心這個限制。我寧願擔心你正在使用的程序。 – Joseph 2012-04-13 00:09:38

回答

0

說實話,我認爲你在這裏錯誤的方式。

在我看來,你可以使用ReplaceWith完全覆蓋匹配的標籤,只需簡單地使用jQuery更改它的屬性即可。

例如:

var htmlcode = result[0]; 
htmlcode = "<div id=\"showitems\" class=\"showitems\"   style=\"display:inline\">" + htmlcode + "</div>"; 
$('.showitems').replaceWith(htmlcode); // size of htmlcode is 39849 bytes 

可以很容易地改變這一點:

$('.showitems').css('float','none').text(result[0]); 

究竟有多少showItems在那裏將要通過的方式,你怎麼知道它是如何比較從C#調用返回多少結果?

編輯2:對不起,沒有意識到CSS顯示屬性實際上並沒有改變。

+0

還要考慮DOM操作性能在不同的瀏覽器上有所不同,最好是調整你需要的屬性,而不是批量刪除和替換。 – 2012-04-13 01:36:37

相關問題