0

onpopstateをいじり始めましたが、問題が発生しました。ブラウザの[戻る]ボタンをクリックすると、それに応じてURLが変更されますが、ページコードが2回読み込まれるため、2つのリストと2つのdivが表示されます。なぜ2倍のコードが生成されるのですか?どうすれば修正できますか?サンプルコードは以下のとおりです。

<style type="text/css">

div {width: 200px; height: 200px; border: 1px solid;}

</style>

<ul>

   <li class="sour">

   <input type="button" value="1"/>

   </li>

</ul>

<script type="text/javascript" >


$('ul li:nth-child(1)').click(function() {
var url = $(this).index();  
$('#insert').load('1.php');
window.history.pushState('', '', 'test1.php?challenge=' + url);
e.preventDefault();
});


window.onpopstate = function(event) {
  $('#insert').load(location.pathname); 
};

</script>


<div id="insert">

<p>hello there</p>

</div>

これが1.phpの内容です

<p>first file</p>

これは、視覚的に何が起こるかについて私が撮ったスクリーンショットへのリンクです。最初の画像は、最初に画面を読み込んだときのものです。2番目の画像は、ボタン1を押したときに発生する画像です。3番目の画像は、ブラウザをクリックして戻ったときに発生する画像です。

http://imgur.com/Nsqej,E1Ydc,sFCLl#0

4

2 に答える 2

1

説明した問題シーケンスに従って、の内容をdivonpopstateにロードします。ランディングページもそうであったので、これはあなたのスクリーンショットに見られる重複をもたらすでしょう。test1.php#inserttest1.php

jquery-pjaxを使用すると、これを他の誰かの問題にすることができます。jqueryに縛られていない場合は、独自のソリューションを作成するよりもおそらく簡単な他のソリューションもあります。

于 2012-09-09T10:32:57.740 に答える
0

jQueryライブラリをどこかに2回含めた可能性があります。

于 2012-09-08T18:07:56.867 に答える