文字列に基づいてクリックイベント関数を割り当てるプラグインがあります。しかし、私はWindow['variable name']
変数が私のプラグインスコープ内にあるので、ウィンドウスコープではないと思う。プラグイン内の変数をクリックしてイベントをクリックするとJavaScript内に関数が割り当てられます
EventLeft/EventRight/EventClose変数の匿名関数をquerySelectorAllループのclickイベントに割り当てる方法を教えてください。
(function() {
// Constructor
this.MarvLightbox = function() {
// Initialise plugin
this.open();
};
MarvLightbox.prototype.open = function() {
setupLightbox.call(this);
};
function setupLightbox() {
var createExpand = function(img) {
// Generate lightbox HTML and append
var instance = this,
html = buildHTML(instance.options.html),
EventClose = function() {
// Do stuff
},
EventLeft = function() {
// Do stuff
},
EventRight = function() {
// Do stuff
};
// Lightbox is active
instance.active = true;
// Assign click events
html.getElementsByClassName('image')[0].src = img;
html.querySelectorAll('[data-click]').forEach(function(e) {
e.addEventListener('click', function() { instance[this.dataset.click]; });
});
}.bind(this);
}
});
質問を閉じるために投票するのではなく、誰にも恩恵を与えない理由を説明してください。 –
あなたはそうではありませんが、あなたが作ったコードは実際には匿名機能を実現するために、最後に行方不明()で実行されません。これらのカッコ内では、引数を渡すことができます。また、設定が必要なパラメータを使用することもできます。 これは通常、これを行う最良の方法ではありません。ちょっと深く説明して、なぜwindows ['variable name'] 'を使って始める必要があるのか、それから私はあなたを助けることができるかもしれません。 – Dellirium
コードはスコープを示すための例でした。私は現在の記事を更新しました。 文字列を使用してclickイベントを参照することで、無名関数をclickイベントに割り当てたいとします。 –