0

URL のハッシュタグに基づいてポップイン ウィンドウを起動できるスクリプトを作成しています。ユーザーがURL +ハッシュをロケーションバーに直接接続すると、機能するようになります。ただし、アンカー リンクをクリックすると、スクリプトは .load() 関数を実行しないようです。私の順序付けが間違っていますか、それとも完全に間違った方法で行っていますか?

<script>
$(document).ready(function() {
var loc = window.location.hash;
var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
});
</script> 
<body> 

<ul class="navigation"> 
<li><a href="#content1">Launch content1</a></li> 
<li><a href="#content2">Launch content2</a></li> 
</ul> 

<div class="container"></div> 

</body>
4

3 に答える 3

0

必要なものを取得するには、呼び出す関数または使用する関数、またはwindow.locationその効果をもたらす何かを作成する必要があります。jQueryコードは、ページが読み込まれた直後にのみ実行され、これらのリンクをクリックするだけではページは再読み込みされません。

于 2010-06-29T21:37:38.477 に答える
0

スクリプトは、ページが最初に読み込まれたときにのみ実行されます。ハッシュフラグメントを含むアンカーをクリックすると、ページはリロードされないため、$(document).ready...のスクリプトは再度実行されません。

jQuery Hashchangeイベントプラグインを追加したいと思います:http://benalman.com/projects/jquery-hashchange-plugin/

次に、アクションをhashchangeイベントにバインドできます。このイベントは、ユーザーがリンクをクリックしてハッシュフラグメントを変更したときにコールバックを実行します。スクリプトは次のようになります。

$(window).bind('hashchange', function() {
 pageCaller();
});

function pageCaller() {
 var loc = window.location.hash;
 var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
}

pageCaller();
于 2010-06-29T21:39:42.827 に答える
0

@hundredwatt に感謝します。プラグインは完全に機能しました。function() アクションを使用して、コードをさらに要約しました。

$(window).bind('hashchange', function() {
 pageCaller();
});

function pageCaller() {
 var loc = window.location.hash;
 var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
}

pageCaller();
于 2010-06-29T22:05:07.470 に答える