8

我正在寻找在 HTML、JS 中创建自定义事件。

<input type="text" oncustombind="foo(event);" />

我怎样才能创建一个这样的?'oncustombind' 是我要创建的自定义事件。我应该能够调用 oncustombind 属性中定义的函数/代码。另外,我需要将一些数据传递给事件对象。

我不想使用任何库,例如 jquery、YUI。

任何帮助将不胜感激。

4

2 回答 2

11

你想要一个CustomEvent

它们应该很容易使用,但浏览器支持很差。但是DOM-shim应该可以解决这个问题。

var ev = new CustomEvent("someString");
var el = document.getElementById("someElement");
el.addEventListener("someString", function (ev) {
    // should work
});
el.dispatchEvent(ev);
于 2011-10-28T10:18:59.270 回答
4

使用new Functionand是不好的做法with,但这可以通过以下方式完成:http: //jsfiddle.net/pimvdb/72GwE/13/

function trigger(elem, name, e) {
    var func = new Function('e',

      'with(document) {'
    + 'with(this) {'
    + elem.getAttribute('on' + name)
    + '}'
    + '}');

    func.call(elem, e);
}

使用以下 HTML:

<input type="text" oncustombind="console.log(e, type, getElementById);" id="x">

然后触发事件,如:

trigger(document.getElementById('x'), 'custombind', {foo: 123});
于 2011-10-28T09:36:39.160 回答