.jsファイルは、リンクされたHTMLファイルから呼び出すことができませんでした - jQueryモバイル
-
10-10-2019 - |
質問
jqueryモバイルフレームワークを使用しています。それぞれ2つのボタンを備えた2つのHTMLファイルがあります。 1つのボタンをクリックすると、他のHTMLファイルに移動します。各HTMLファイルにロードされたJavaScriptは、HTMLファイルのクリックイベントを処理します。ここで問題は、最初のHTMLファイルからナビゲートされた2番目のHTMLファイルからロードされた.jsは呼び出されませんでした。エラーが表示されます。
エラー:p.attr( "href")は未定義です
ソースファイル:file:///users/aspire/development/jquery%20mobile/sample/jquery.mobile-1.0a2.min.js
ライン:96
どうしたの?
編集:test.html
html-tags。 headertagの下
<link rel="stylesheet" href="jquery.mobile-1.0a2.min.css" />
<script src="jquery-1.4.4.min.js"></script>
<script src="jquery.mobile-1.0a2.min.js"></script>
<script type="text/javascript">
$(function(){
$('#test').click(function(){
alert('This is a general button!');
});
});
</script>
<Bodytag>
<div data-role="content">
<div data-role="page">
<a id="test" data-role="button" data-inline="true" data-theme="b">Click here</a>
<a href="~Development/JQuery Mobile/sample/test2.html" data-role="button" data-inline="true" >Navigate to two</a>
</div>
</div>
</Bodytag>
2番目のHTMLで。 test2.html
html-tags。 headertagの下
<link rel="stylesheet" href="jquery.mobile-1.0a2.min.css" />
<script src="jquery-1.4.4.min.js"></script>
<script src="jquery.mobile-1.0a2.min.js"></script>
<script type="text/javascript">
$(function(){
$('#test2').click(function(){
alert('This is a general button!');
});
});
</script>
<Bodytag>
<div data-role="content">
<div data-role="page">
<a id="test2" data-role="button" data-inline="true" data-theme="b">Click here</a>
<a href="~Development/JQuery Mobile/sample/test.html" data-role="button" data-inline="true" >Navigate to two</a>
</div>
</div>
</Bodytag>
Test2.htmlがブラウザで個別に開かれている場合は正常に動作します。 test.htmlに戻った後でも、同じエラーが発生します。 JavaScriptは呼び出されません。つまり、.htmlが初めて起動された場合、JavaScriptは正常に動作します。他のページへのナビゲーションの後、JavaScriptは呼び出されません。
解決
同じ問題に遭遇しましたが、2番目のHTMLのJavaScriptは実行されません。 rel = "external"を追加して強制的にアンロードを追加することで、問題を解決しました。すなわち
<a href="test2.html?" id="test2" data-role="button" data-inline="true" data-theme="b" rel="external">Click here</a>
これもあなたのために働くことを願っています。
他のヒント
クレメントの回答は、リンクを置き換えるAjaxコールがなかったため、助けました。
通常のリンク(rel = exteralなし)がajaxコールでフェッチされており、ボディのみが現在のページのDOMに追加されます。
それがあなたのJSが呼ばれない理由です。
すべてのJSは、外部ファイル内のすべてのページにリンクする必要があります。