それは私のhtml-bodyセクションの最後にだならば、なぜいくつかのjqueryのコードは動作しますか?

StackOverflow https://stackoverflow.com/questions/1093124

質問

私はタブを作成するための次のコードを持っています。 div要素のすべてが定義されている前に - それは、HTML本体部の最後ではなく、私が最初にそれを置く場合は動作します。なぜそれがあるかもしれない?

<script type="text/javascript">
    $("ul.tabs li.label").hide();
    $("#tab-set > div").hide();
    $("#tab-set > div").eq(0).show();
  $("ul.tabs a").click(
    function() {
        $("ul.tabs a.selected").removeClass('selected');
        $("#tab-set > div").hide();
        $(""+$(this).attr("href")).show();
        $(this).addClass('selected');
        return false;
    }
  );
  $("#toggle-label").click( function() {
    $(".tabs li.label").toggle();
    return false;
  });
</script>
役に立ちましたか?

解決

あなたはドキュメント準備ブロックでそれをラップする必要があります。これは、ページが完全に読み込まれるまで、発射コードを防ぎます。

<script type="text/javascript">
    $(function() {
      // do something on document ready
      $("ul.tabs li.label").hide();
      $("#tab-set > div").hide();
      $("#tab-set > div").eq(0).show();
      $("ul.tabs a").click(
        function() {
          $("ul.tabs a.selected").removeClass('selected');
          $("#tab-set > div").hide();
          $(""+$(this).attr("href")).show();
          $(this).addClass('selected');
          return false;
        }
      );
      $("#toggle-label").click( function() {
        $(".tabs li.label").toggle();
        return false;
      });
    });
</script>

他のヒント

DOMはまだ準備ができていないので、それは可能性が高いですので、彼らは存在しません。

そのため、あなたが次のことを行う必要があります:

$(function() {
    // Any code in here will only be executed when the DOM is ready.
});
jQuery(function($) {
    // put your code in here and it will be executed
    // when the document has fully loaded.
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top