ajaxによってロードされたページでスクリプトを実行するにはどうすればよいですか?
jquery.load を使用すると、すべてのスクリプト コードが削除されるという事実は、非常に厄介です。AJAX を使用しようとしているので、ページ全体をリロードする必要はありません。
スクリプト、現在:
$(document).ready(function() {
var hash = window.location.hash.substr(1);
var href = $('#nav li a, #nav-top li a, #nav-left li a, #nav-right li a').not('.scroll').each(function(){
var href = $(this).attr('href');
if(hash==href.substr(0,href.length-4)){
var toLoad = hash+'.php #content';
$('#content').load(toLoad)
}
});
$('#nav li a, #nav-top li a, #nav-left li a, #nav-right li a').not('.scroll').click(function(){
var toLoad = $(this).attr('href')+' #content>*'; // there must be a blank space in ' #content>*'
$('#content').hide(888,loadContent);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn(888);
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').show(888,hideLoader());
}
function hideLoader() {
$('#load').fadeOut(888);
}
return false;
});
});
ここで動作するデモの例のページ:
http://www.ideagasms.net/index2 ('home' と 'about' のリンクをクリックするだけで、動作を確認できます。)
jquery はすべて、縮小された 3 つのファイルに格納されています。それらには、php/jquery ショッピング カート、lazyload、lightbox などが含まれます。たとえば、「カートに追加」ボタンや img.lazyload を #content div に追加したときに、それらが引き続き機能するように、3 つの主要な js ファイルをすべて「存続」させたいと考えています。
livequery プラグインはまともな解決策だと聞いたことがありますが、それは私の頭をはるかに超えており、やり過ぎのように思えます。
上記のスクリプトを変更して one.min.js two.min.js と three.min.js を含め、それらを「再トリガー」してアクティブなままにする方法が必要です。
この質問が大したことなら、これを理解できる人なら誰でも喜んで雇います。その後、ここにソリューションを再投稿できます。(私が尋ねているこの質問は、上記の「jqueryを使用してコンテンツをロードしてアニメーション化する」スクリプトを入手したメインのnettutsページを含む、いたるところで尋ねられており、解決策はほとんどの人を回避していますが、一部の人はなんとか修正できましたこれは、私は彼らのソリューションを実装する方法を理解することはできません. これを一度に解決できる人は誰でも、何百人もの欲求不満の人々を一度に助けるでしょう. nettutsチュートリアルを使用してまったく新しいサイトを構築すると、1週間しかわかりません.スクリプトが関連付けられているコンテンツをロードするのは良くないという仕事に...それは非常にイライラします.)