0

我知道扩展 DOM 元素是一种不好的做法。但我想知道是否可以将方法注入命名空间下的特定元素。以下示例说明了我的意思。

var element = document.getElementById('my-element');

var inject = function (element) { 
    var nameSpace = element.nameSpace = {};
    nameSpace.method1 = function () {
        //do something
    }
    nameSpace.method2 = function () {
        //do something
    }
}

inject(element);

这可以接受吗?

4

1 回答 1

0

我不确定扩展元素是您正在寻找的东西,而是从将侦听器添加到这些元素的代码的角度来看待它。

但是,放置这些处理程序的地方是命名空间的好地方。

例如:

var myNS = {};
myNS.count = 0;
myNS.method1 = function(){
  var out = document.getElementById("out");
  out.innerHTML = "Clicked " + myNS.count++ + " times!";        
};

window.onload = function(){
    var elem = document.getElementById('my-element');
    elem.addEventListener('click',myNS.method1, false);
};​

(请参阅此 jsFiddle 示例:http: //jsfiddle.net/mori57/3CjEW/

于 2012-11-05T17:49:30.377 回答