2

如果这等效于 jquery 绑定方法,那么触发器方法会是什么。

function bind( scope, fn ) {
    return function () {
        fn.apply( scope, arguments );
    };
}

上面的代码来自另一篇文章,看起来和代理方法一样

你也可以对此发表评论

我必须从这个框架中取出 jquery 部分,这只是相关部分

if (selector === '') {
              this.el.bind(eventName, method);
            } else {
              this.el.delegate(selector, eventName, method);
            }
          }
        }
      });

      if (includes) result.include(includes);

      return result;
    };

    exports.Controller = mod;
})($, window);

var exports = this;

var Events = {
    bind: function(){
      if ( !this.o ) this.o = $({});
      this.o.bind.apply(this.o, arguments);
    },
trigger: function(){
  if ( !this.o ) this.o = $({});
  this.o.trigger.apply(this.o, arguments);
}
};

谢谢

4

2 回答 2

8

这取决于您希望触发的事件类型。如果是自定义事件:

var event = new Event('build');
elem.dispatchEvent(event);

如果是原生事件:

var event = new MouseEvent('click');
elem.dispatchEvent(event);

这当然是为了模拟鼠标事件。其他事件有自己的类型。

于 2013-07-24T13:02:20.717 回答
4

一旦我越过这个站点如何在 JavaScript 中手动触发事件

// Here is a VERY basic generic trigger method
function triggerEvent(el, type)
{
    if ((el[type] || false) && typeof el[type] == 'function')
    {
        el[type](el);
    }
}

// We could call this on multiple objects at any time
function resetFields()
{
    triggerEvent(document.getElementById('has-email'), 'onchange');
    triggerEvent(document.getElementById('other-field'), 'onclick');
    triggerEvent(document.getEleemntById('another-one'), 'onblur');
}
于 2013-07-24T11:55:57.380 回答