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 に答える