-4

プログラマー (アウトソーシング) からこのコードを取得しました。

<script type="text/javascript">
  $(function(){
     $('#notif-icons > li > a, #top-menu > li > a').click(function() {
         var clicked = $(this).next('.popup-notif');
         $('.popup-notif').not(clicked).fadeOut('fast');
         clicked.slideToggle('fast');
     }).toggle(function(){
        $(document).click(function() {
            $('.popup-notif').fadeOut('fast');
        });
        $('.popup-notif').click(function(e) {
            e.stopPropagation();
        });
     }, function() {
     });
  });
</script>

そのコードはプレーンな HTML では単独で動作しますが、コードを挿入すると動作しなくなり、そのコードに何か問題があると思います。例えば ​​:

}, function() {
         });
      });
    </script>

その空の function() が何に使用されたのかわかりません...助けてください。私はJavaScriptの専門家ではないので...ありがとう!

**更新: このコードは、通知を表示するために使用されます。「notif-icons」をクリックすると、「.popup-notif」が表示され、その逆も同様です。

4

2 に答える 2

2

「コードに入れる」と言うとき (なぜ「z」を使用しなかったのですか?!!)、それはそのまま .js ファイルにコピーするときのことですか? もしそうなら、<script>要素を .js ファイルにコピーしていませんか? HTML とインラインの JavaScript には要素が必要です。.js ファイル内の JavaScript は必要あり<script>ません。.js ファイル内では、.js ファイルを参照する HTML 内のみです。<script></script>

于 2012-08-14T15:32:58.640 に答える
1

コードは実際にはそれほど悪くありません。この場合、toggleは効果ではなくイベントとして使用されます ( http://api.jquery.com/toggle-event/を参照)。$('#notif-icons > li > a, #top-menu > li > a')それに渡される 2 つの関数は、要素の偶数クリックと奇数クリックで何をするかを指定します。

JavaScript コードは、本来の目的を果たしているように見えます。HTML が正しいことを確認してください。$('#notif-icons > li > a, #top-menu > li > a')が正しい要素と一致していること、およびすべて.popup-notifの の後に要素が配置されていることを確認してください。毎回入れないと、メニュー項目をクリックしたときにポップアップが不思議なことに消えるかもしれません (これに対する修正は、読者の課題として残されています)。 '#notif-icons > li > a, #top-menu > li > a'

また、関連する HTML がロードされた後に JavaScript がロードされていることを確認してください。ファイルの一番下に置くか、$(document).ready(function(){[code goes here]}).

残念ながら、あなたの質問には、より具体的な回答を提供するのに十分な詳細が提供されていませんでした。JavaScript にはコンテキストが必要です (つまり、関連する HTML も提供してください)。

あなたの個人的な JavaScript のスキルのレベルはわかりません。しかし、簡単なヒント: アウトソーシングされた作業は、一般的に機能しますが、優れたコードにはなりません。彼らが使用しているテクノロジーが何であれ、それを完全に信頼するのではなく、彼らが行った作業を理解して使用できるようにしっかりと把握しておくことをお勧めします。

于 2012-08-14T15:33:08.947 に答える