2012-04-12 41 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

相关问题