我在理解如何使用“this”關鍵字來參考已單擊的 DOM 元素時遇到問題,但在“this”通常指的是該類的實體的類中也使用它。
以下是相關代碼的片段:
class Passwords {
constructor() {
$('.password-column button.steel-button').on('click', this.selectButton);
}
selectButton() {
$(this).toggleClass('selected');
this.columnController();
}
columnController(){
// A function that does something else
}
}
我遇到的問題是它無法將 columnController() 識別為函式。我想這是因為范圍以及它如何與“this”一起使用,但我不確定如何進行。
在上面的代碼中,selectButton() 成功地應用于所有指定的按鈕,但是在 this.columnController() 上給出了錯誤。確切的控制臺錯誤是:
未捕獲的 TypeError:this.columnController 不是函式
先感謝您。
uj5u.com熱心網友回復:
你不能用它this來表示兩個物件,所以選擇一個并通過其他機制獲取另一個。
例如:使用箭頭函式將this值系結到類,然后從event物件中獲取元素。
class Passwords {
constructor() {
$('.password-column button.steel-button').on('click', this.selectButton);
}
selectButton = (event) => {
$(event.currentTarget).toggleClass('selected');
this.columnController();
}
columnController() {
console.log("this runs");
}
}
new Passwords();
.selected {
background: blue
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="password-column">
<button class="steel-button">click</button>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/498145.html
標籤:javascript jQuery 班级 这个
