0

現在、私はjavascriptで名前空間を扱っています。最初のステップとして、テスト ページを作成します。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Namespace</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var NSVB = NSVB || {};
NSVB.sub = {
  init: function(){
    alert("NSVB rocks");
    $("#click-test").bind("click",NSVB.sub.clicktest());
  },
  clicktest: function(){
    alert("clicked");
  }
}

NSVB.sub.init = function(){
  alert("NSVB rocks overwirtten");
  $("#click-test").bind("click",NSVB.sub.clicktest());
}

$(document).bind("load", NSVB.sub.init());
</script>
</head>
<body>
    <p id="click-test">click to test</p>
</body>
</html>

私のコードに期待することは次のとおりです。

  • 関数 init() と clicktest() で名前空間を定義します
  • 関数 init() を上書きします
  • クリックしたときに #click-test でクリック イベントを処理する

私のコードは何をしますか:

  • 関数 init() と clicktest() で名前空間を定義します
  • 関数 init() を上書きします
  • clicktest() を呼び出す
  • クリックしても何も起こりません!!

本当にわからない!誰かが助けてくれることを願っています。

前もって感謝します。

編集

いくつかのテストの後、次のことを行いました。

括弧を削除

$("#click-test").bind("click",NSVB.sub.clicktest);

交換

$(document).bind("load", NSVB.sub.init);

と(そのうちの1つ、あなたが使いたいもの)

document.addEventListener("DOMContentLoaded",NSVB.sub.init,false);

また

$(document).ready(function(e) {
NSVB.sub.init();
});

すべてが正常に動作し、期待どおりです!

4

1 に答える 1

1

関数をバインドしませんでしたが、関数の結果は何もありません。

変化する

$(document).bind("load", NSVB.sub.init());

$(document).bind("load", NSVB.sub.init);

NSVB.puzzle.clicktest()他の場所でも同じ問題があります(もちろん、関数を返す場合を除く):

    $("#click-test").bind("click",NSVB.puzzle.clicktest());
于 2013-07-03T08:12:05.767 に答える