0

ボタンとして使用しているdivがあり、それを含むフォームを送信するために、jQueryの.on()を使用してコンテンツラッパーにデリゲートを設定していますが、クリックしてもコールバック関数が呼び出されません発生し(これを確認するためにChromeでブレークポイントを設定しています)、「Uncaught TypeError:Object#signup-button has nomethod'apply'」というエラーが発生します。

もともとは、.on()の2番目のパラメーターとして文字列を使用しているためだと思っていましたが、以前は別のイベントタイプ(クリックではなく)で同じことを行ったことがあり、うまくいったので困惑しました。

私のJSは次のようになります。

var myApp = function () {
  var handleSubmitForm = function (e) {
    $(this).closest('form').submit(); // this is what's not getting called w/breakpoint
  }

  var init = function () {
    var self = this;

    $('.content').on('click', '#signup-button', self.handleSubmitForm);
    $('.content').on('click', '#login-button', self.handleSubmitForm);
  }

  return {
    init: init,
    handleSubmitFrom: handleSubmitForm
  }
}();

そして、HTMLは次のようなものです。

<div class="content">
  <form>
    <div id="signup-button">
      <span>SIGNUP</span>
      <img src="/path/">
    </div>
  </form>
</div>
<script>
  myApp.init();
</script>

何か案は?

4

1 に答える 1

1
var myApp = {
    handleSubmitForm : function(e) {
        $(this).closest('form').submit();
    },

    init : function() {
        var self = this;

        $('.content').on('click', '#signup-button', self.handleSubmitForm);
        $('.content').on('click', '#login-button', self.handleSubmitForm);
    }
};
myApp.init();

http://jsfiddle.net/b84cE/

于 2012-08-31T23:47:35.337 に答える