此关键字 *within* Javascript 模块
This Keyword *within* Javascript Module
我正在创建一个 Javascript 模块,其任务基本上是通过单击按钮通过 Ajax 动态生成一个打开模式。这个按钮有一个数据属性,我传递给 Ajax 调用来告诉它我想打开哪个模式。
这是该模块的简化版本:
( function() {
let modalwindow = {
init: function() {
this.bindEvents();
},
bindEvents: function() {
$( document ).on( 'click', '[data-action="open-modal"]', this.ajaxCall.bind( this ) );
},
ajaxCall: function() {
$.ajax({
url: ajax.url,
type: 'post',
context: this,
data: {
modal_id: this.modalID, // In this case, I need *this* to refer to the button
action: 'open_modal'
},
success: function ( response ) {
// In this case, I need *this* to refer to the modalwindow object
this.openModal( response, this.modalID );
}
});
},
openModal: function( response, modalID ) {
$( response ).appendTo( Body ).attr( 'data-state', 'active-modal' );
}
}
modalwindow.init();
})()
问题是,在 ajaxCall
方法中,我需要 this 关键字来指代两个不同的东西: 我需要它来指代我设置时的按钮modal_id 参数;我需要它来引用 modalwindow 对象以在成功时调用 openModal
方法。我怎么做?
现在 this 总是引用 modalwindow 对象,实际上 openModal
有效;但是 modal_id 参数是错误的,因为其中 this 应该指的是按钮。
我是 Modular JS 的新手,这让我抓狂。我发现了类似的问题,但 none 似乎解决了模块中所有方法的问题。
您在设置处理程序时已经绑定了 this
,因此 ajaxCall
中的 this
将引用模式 window。所以接受 ajaxCall
:
中的事件参数
ajaxCall: function(e) {
...然后在需要按钮的地方使用 e.currentTarget
,在需要模式 window 的地方使用 this
。在事件处理程序中,e.currentTarget
(和 this
)均指代处理程序所连接的元素(与 e.target
相对,后者指的是事件的目标元素,这可能是 e.currentTarget
).
的后代
我正在创建一个 Javascript 模块,其任务基本上是通过单击按钮通过 Ajax 动态生成一个打开模式。这个按钮有一个数据属性,我传递给 Ajax 调用来告诉它我想打开哪个模式。
这是该模块的简化版本:
( function() {
let modalwindow = {
init: function() {
this.bindEvents();
},
bindEvents: function() {
$( document ).on( 'click', '[data-action="open-modal"]', this.ajaxCall.bind( this ) );
},
ajaxCall: function() {
$.ajax({
url: ajax.url,
type: 'post',
context: this,
data: {
modal_id: this.modalID, // In this case, I need *this* to refer to the button
action: 'open_modal'
},
success: function ( response ) {
// In this case, I need *this* to refer to the modalwindow object
this.openModal( response, this.modalID );
}
});
},
openModal: function( response, modalID ) {
$( response ).appendTo( Body ).attr( 'data-state', 'active-modal' );
}
}
modalwindow.init();
})()
问题是,在 ajaxCall
方法中,我需要 this 关键字来指代两个不同的东西: 我需要它来指代我设置时的按钮modal_id 参数;我需要它来引用 modalwindow 对象以在成功时调用 openModal
方法。我怎么做?
现在 this 总是引用 modalwindow 对象,实际上 openModal
有效;但是 modal_id 参数是错误的,因为其中 this 应该指的是按钮。
我是 Modular JS 的新手,这让我抓狂。我发现了类似的问题,但 none 似乎解决了模块中所有方法的问题。
您在设置处理程序时已经绑定了 this
,因此 ajaxCall
中的 this
将引用模式 window。所以接受 ajaxCall
:
ajaxCall: function(e) {
...然后在需要按钮的地方使用 e.currentTarget
,在需要模式 window 的地方使用 this
。在事件处理程序中,e.currentTarget
(和 this
)均指代处理程序所连接的元素(与 e.target
相对,后者指的是事件的目标元素,这可能是 e.currentTarget
).