これが私の機能です:
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
$('div#loading').fadeIn();
$('div#content').load('pages/'+pageLoad);
});
呼び出されたページを表示するページに id コンテンツを含む div がありますが、ページが 2 回読み込まれるようです。ページの 1 つがシャッフルされた順序で何かを表示し、それが 2 回読み込まれるのを見ることができるので、これを知っています。興味深いことに、追加すると正常に動作します
throw new Error('something here');
次のように関数の最後まで:
// LINK CLICK
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
$('div#loading').fadeIn();
$('div#content').load('pages/'+pageLoad);
throw new Error('bla bla');
});
しかし、それ以外の場合は常に2回発火します。並べ替えなどをしてみましたが、まだ残っています。この機能を使用する私のリンクは単純です:
<a href="#" class="link" data-page="whatever.php">link</a>
jQuery 1.7.2 の 1 つのインスタンスのみが呼び出されています。私は何をすべきかについて無知です。live() および on() 関数も試してみましたが、まったく同じ結果が得られました。
!!! 編集 !!!
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
console.log('clicked');
$('div#loading').fadeIn(function() {
console.log('faded');
$('div#content').load('pages/'+pageLoad+'.php', function() {
console.log('loaded');
});
});
});
今...ここが本当に興味深いところです。私は自分のリンクを 1 つも変更していません
data-page="page.php"
ただに
data-page="page"
(.php が関数に直接含まれるようになったため)
意図したとおりに機能するはずのリンクをクリックすると、ロードされ、クリックされ、エラー コンソールでフェードアウトします。それぞれ1つだけです。ページが 2 回読み込まれます。ただし、機能しないはずのリンクをクリックすると(.phpが含まれているため)、それでも機能します!! 次のように、エラー コンソールに 3 つの単語とエラーが表示されます。
layout.js:25 clicked
layout.js:27 faded
jquery.min.js:4 GET pages/login1.php.php 404 (Not Found)
layout.js:29 loaded
しかし、ページはクリックするたびにコンテンツdivにロードされ、本来のように1回しかロードされません...
ここで確立したことから、リンクをクリックするとjqueryがpage.phpとpage.php.phpを取得するという奇妙な現象が発生しています
<a href="#" class="link" page="login1.php">
次のリンクを使用して、サーバー上にないページを取得しようとすると、証拠が表示されます。
<a href="#" class="link" data-page="no">no</a>
、ここで 2 つのエラーが表示されます。
jquery.min.js:4 GET pages/no 404 (Not Found)
jquery.min.js:4 GET pages/no.php 404 (Not Found)
これはどのように可能ですか?なぜjqueryはこれを行うのでしょうか? ここで何が起こっているのか説明できる人はいますか?