0

を使用して同じページを div に動的にロードしました.load()。各ページからの div は、メイン ページの 2 つのペインに読み込まれます。できます。私がやろうとしているのは、サブページに含まれるリンクで JavaScript を機能させることです。サブページにはリストがあります。

リンクはルートに対して相対的でなければなりませんが、同じ方法で JS ファイルをリンクしても機能しません。.js ファイルがどこにあると言っても、何も起こりません。最初の .load() 関数だけです。

コードに何か追加したり、.js ファイルを探している場所を見つける方法はありますか?

これは.load()

$(document).ready(function() {
    //#left and #right are divs loading content from .content/.description
    $('#left').load('demos/websites.html .content');
    $('#right').load('demos/websites.html .description');
    $('nav#subnav li a').click(function() {
        var page = $(this).attr('href');
        $('#left').load(page + ' .content');
        $('#right').load(page + ' .description');
        return false;
    });
});
4

4 に答える 4

3

イベント委任を使用する方がよいでしょう。呼び出しは非同期であるため.load()、応答が受信されていない間はすぐに戻り、.click()バインディングは実行時に DOM 内に存在する要素のみを考慮します。

$(document).on('click', 'nav#subnav li a', function() {
  ...
});

jQuery 1.7 では、.on()これを行うための推奨される方法です。

于 2013-02-26T12:22:38.167 に答える
1

タイミングの問題のようです。ロードのコールバック関数を使用して、クリックイベントを登録します。

 $('#left').load('demos/websites.html .content',function() {
       console.log('Left pane loaded');
  });
于 2013-02-26T12:25:01.460 に答える
0

.load接尾辞付きのセレクター式を使用して関数を使用している.js場合、ロードしようとしているページに含まれているファイルは、まったく含まれていないかのように実行されません。

したがって、2つのオプションがあります。

  1. .load接尾辞付きセレクター式なしで関数を使用する
  2. または.js、メールページにファイルを含め、次のようなコンテンツを読み込んだ後、必要な機能を実行します

    $('#left')。load('demos / website.html .content'、function(){//ここでjs関数を実行します。});

jQuery Webサイトから:

スクリプトの実行

接尾辞付きのセレクター式のないURLを使用して.load()を呼び出すと、スクリプトが削除される前にコンテンツが.html()に渡されます。これにより、スクリプトブロックが破棄される前に実行されます。ただし、URLにセレクター式を追加して.load()を呼び出すと、DOMが更新される前にスクリプトが削除されるため、スクリプトは実行されません。両方のケースの例を以下に示します。

ここで、ドキュメントの一部として#aにロードされたJavaScriptはすべて正常に実行されます。

1. $('#a').load('article.html');

ただし、次の場合、#bにロードされているドキュメントのスクリプトブロックは削除され、実行されません。

1. $('#b').load('article.html #target');
于 2013-02-26T12:38:46.203 に答える
-1

アレクサンダーからの提案を実装した完全なコードを次に示します。

 $(document).ready(function() {
  //#left and #right are divs loading content from .content/.description
  $('#left').load('demos/websites.html .content');
  $('#right').load('demos/websites.html .description');

  $(document).on('click', 'nav#subnav li a', function() {
    var page = $(this).attr('href');

    $('#left').load(page+' .content');
    $('#right').load(page+' .description');
    return false;

  });
});

ただし、jquery 1.7 以降を使用していることを確認してください。

コードが機能しない理由 - クリック ハンドラーをリンクにバインドするステートメントの場合、その時点でリンクが DOM 自体に読み込まれない可能性があります。

于 2013-02-26T12:33:53.913 に答える