2012-04-12 9 views
1

jQueryでreplaceWith()関数を使用してWebページを更新しています。私はHTMLコードを構築するためにデータベースからデータを抽出するC#Webサービスプログラムからデータを受け取ります。大量のデータを置き換える場合を除いて正常に動作します。この例では動作しませんが、Webページのコードを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'); 

      } 
     } 

私は私のWebページを構築するためにjqueryのを使用していた理由は、ページのリロードを避けるためです。私は簡単に私のC#のプログラムでより効率的かもしれないが、ページのリロードは、ウェブサイトを所有する人々の指示に従って回避する必要がありますwebdataコンテンツをプログラムすることができます。私は与えられた推奨事項を試してみます。

注:次のコードを使用して動作させました。

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

.textを使用すると、生データが表示され、HTMLデータは表示されないため、機能しません。貢献した人に感謝します。

+2

その壊れたhtmlを見てみましょう。 –

+1

あなたのイベントはどのように縛っていますか?委任されたハンドラを使用していますか?要素の代理ハンドラが置き換えられていますか? –

+1

私は限界について心配しません。私はむしろあなたが使用している手順について心配したいと思います。 – Joseph

答えて

0

正直言って、ここで間違った方向に行くと思います。

jQueryでプロパティを変更するだけで、ReplaceWithを使用して一致タグを完全に上書きすることができます。例えば

:道であることをそこに行くされているどれだけ多くのshowItems

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

、そしてどのようにあなたはそれが比較方法を知っていますか:

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

は簡単にこれを変更することでした。 C#呼び出しから返される結果の数はいくつですか?

編集2:申し訳ありませんが、CSSの表示属性が実際に変更されていないことを認識していませんでした。

+0

また、DOM操作のパフォーマンスがブラウザによって異なることを考慮して、必要な属性を調整してから、卸売りの取り外しと置き換えをするのではなく、 –

関連する問題