javascript:扩展本机元素点击事件

时间:2014-05-20 12:59:47

标签: javascript javascript-events prototype

jsbin:http://jsbin.com/weqitiwe/1/

您好, 世界上大多数编码器都避免扩展本机javascript对象。但是,摆脱规则总是很有趣。

部分 new 原生方法有效。但是click事件不起作用。这是示例代码(抱歉,如果它是愚蠢的):

Element.prototype.click = function(action) {
    this.addEventListener('click', action, false);
    return this;
}

html:<div id="the_id">click me</div>

然后使用它:

var elm = document.getElementById('the_id');
function say() {
    alert('hi');
}
elm.click(say);

目标只是能够使用elm.click(the_function);以及elm.addEventListener('click', the_function, false);

任何帮助表示赞赏! :),

由于

1 个答案:

答案 0 :(得分:0)

问题是您的新方法clickHTMLElement.click现有方法冲突(用于以编程方式触发元素点击)。

HTML元素继承自HTMLELement,后者继承自Element。当您在click上创建Element并尝试在HTML元素上触发它时,永远不会看到它,因为HTMLElement.click会覆盖它。

使用不同的方法名称:

Element.prototype.click2 = function(action) {
    this.addEventListener('click', action, false);
    return this;
}

...

elm.click2(say);

<强> Fiddle