0

我有一个用作按钮的 div,为了提交包含它的表单,我使用 jQuery 的 .on() 在内容包装器上设置了一个委托,但是单击时没有调用回调函数发生(我在 Chrome 中设置断点来检查这个),并且我收到错误“Uncaught TypeError: Object #signup-button has no method 'apply'”。

我最初认为这可能是因为我使用字符串作为 .on() 的第二个参数,但我之前用另一种事件类型(不是点击)做过同样的事情,它已经奏效了,所以我很难过.

我的 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 回答