0

あなたが私のサイトを読み込んでいない場合$_SESSION(ログインしていない場合)、私はあなたにこれを送ります<head>:

<script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/requires-signup.js"></script>
<script src="/js/core.js"></script>

私のcore.jsファイルには、サイト全体の JavaScript コードが含まれています。例えば:

$(document).on('click', '.ajaxload-tab', function(){
   console.log('I shall do the load!');
   return false;
});

ただし、ログに記録されていないユーザーの場合、これの前に次のrequires-signup.jsファイルが続きます。

$(document).on('click', '.requires-signup', function(){
   console.log('No can do!');
   return false;
});

今、私はあなたにこの要素を提供しています:

<div class="ajaxload-tab requires-signup">CLICK</div>

この要素をクリックします。コンソールに次のように表示されます。I shall do the load!なぜですか?

編集

イベント バインドのreturn false;パーツを削除すると、コードは期待どおりに機能します。.ajaxload-tabただし、その部分を削除すると、他のものが台無しになるため、削除できません。

4

2 に答える 2

1

おそらく、requires-signup.js で .off() を使用してみてください。

core.js で:

$(document).on('click.requires-signup', '.ajaxload-tab', function(){
   console.log('I shall do the load!');
   return false;
});

requires-signup.js で

$(document).off(".requires-signup")

http://api.jquery.com/off/

編集:または、グローバルを気にしない場合は、この方法

window.notSignedUp = false;

$(document).on('click.requires-signup', '.ajaxload-tab', function(){
   if (window.notSignedUp) return;
   console.log('I shall do the load!');
   return false;
});

次に、requires-signup.js で window.notSignedUp = true を設定します

于 2013-11-14T19:26:14.703 に答える
0

head タグにロードするファイルの順序を次のように変更してみてください。

<script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/core.js"></script>
<script src="/js/requires-signup.js"></script>

あなたの問題は、最初に要素に「クリック」イベントを設定して、console.log 'No can do!' に設定していることだと思います。次に、core.js をロードするときに、その「クリック」イベントをオーバーライドします。新しい機能。

それにもかかわらず、2 つの別々の要素で作業し、必要に応じて表示/非表示にすることをお勧めします。

于 2013-11-14T19:20:39.413 に答える