0

コードを実行するボタンがある場合

$('#main').load('welcome.html');

コードをwelcome.html実行するボタンがあります

$('#main').load('otherpage.html');

その関数が親ファイルの HTML コードにあるか子ファイルにあるかに関係なく、Javascript は実行されません。

外部からロードされた HTML ファイルから Javascript 関数を動作させるにはどうすればよいですか?

編集 これはもう少しサンプルです...

ホームページ:

<body>
    <div id="main"></div>
</body>

<script>
    document.onLoad(){
        $('#main').load('welcome.html');
    }

    function show(file){
        $('#main').load(file+'.html');
    }
</script>

welcome.htmlページ:

<a href="javascript:show(test)">Test</a>

...ただし、[テスト] ボタンをクリックtest.htmlすると、メイン div に読み込まれません。

編集2

これが現在の状態と問題の内容です - 正確に。

コードの骨を PasteBin にアップロードしました

「グリッド」ボタンをクリックすると、コンテンツが変化し、フッターが変化します。

ただし、JavaScript に基づく URL を持つフッターには、次のエラーが表示されます。

Uncaught SyntaxError: Unexpected token ILLEGAL

1i.html...ページにアクセスしようとしたとき。

4

3 に答える 3

1

test変数と'test'文字列には違いがあります。

<a href="javascript:show(test)">Test</a>

おそらく次のようになります。

<a href="javascript:void show('test')">Test</a>
于 2013-02-05T23:50:22.697 に答える
0

スクリプトを AJAX 経由でページにロードする場合、メイン ページは既に通過していることを理解することが重要document.readyです。したがって、ロードしたコードはすぐに実行されます。

ロードしたコードが参照先の html より前にある場合、起動時にその html が見つかりません。

リモート ページの html の後にコードを配置すると、この問題が解決します。

于 2013-02-05T23:41:47.567 に答える
0

jQuery.live()jQuery.on( ) を確認してください。

イベントハンドラが間違っている可能性があります。load() または ajax() を介して新しいマークアップをインポートする場合、新しいドキュメントからハンドラーを初期化する必要があります。最も簡単な方法は、jQuery.click() の代わりに jQuery.on または jQuery.live() を使用することです。

$('MYBUTTON').live('click', function(){
    $('#main').load('your_url.html')
})

または、コールバック関数を使用して、ボタン イベントを (再) 初期化します。

より良い解決策は次のとおりです。ボタンのrel属性にtarget_urlを追加するだけです...

<button rel="YOUR_URL.html">Open Page</button>

$('button[rel]').live('click', function(){
    $('#main').load($(this).attr('rel'));
})
于 2013-02-05T23:47:08.897 に答える