私はバニラ JavaScriptツールを作成しています。これを有効にすると、渡された各要素にイベント リスナーが追加されます。
私はこのようなことをしたいと思います:
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
残念ながら、これは機能しません。私の知る限り、イベント リスナーを追加するとき、パラメーターは無名関数にのみ渡すことができるためです。
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
問題は、ツールが無効になっているときにイベント リスナーを削除できるようにする必要があることですが、無名関数でイベント リスナーを削除することはできないと思います。
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
jQuery を使用して問題を簡単に解決できることはわかっていますが、依存関係を最小限に抑えようとしています。jQuery はこれをどうにか回避する必要がありますが、コードは少しジャングルです!