我有以下JS类:
import $ from 'jquery';
import dt from 'datatables.net';
class ProductBuilder {
constructor() {
this.events()
} // end constructor
events() {
$(".btn.btn-primary.btn-sm").on("click", this.ourClickDispatcher.bind(this))
$(".btn.btn-danger.btn-sm").on("click", this.ourClickDispatcher.bind(this))
}
ourClickDispatcher(e) {
//initializing pressedButton the first time
var pressedButton = $(e.target).closest(".btn.btn-primary.btn-sm");
if (pressedButton.data('exists') == 'Product') {
console.log("cpu clicked")
this.loadData('cpu')
}
}
loadData(part) {
//this function loads the data
}
addToTable(e) {
//here the same button is initializing as in ourClickDispatcher
var pressedButton = $(".btn.btn-primary.btn-sm");
}
}
export default ProductBuilder;
我想将一个全局变量添加到cap pressedButton
,而不是总是通过jquery搜索它,如下所示:
var pressedButton = $(".btn.btn-primary.btn-sm");
我尝试将pressedButton
添加到构造函数中,如下所示,但是这给了我错误:Uncaught ReferenceError: pressedButton is not defined
constructor() {
pressedButton
this.events()
} // end constructor
有关如何将pressedButton
定义为全局变量的任何建议吗?
感谢您的回复!
答案 0 :(得分:1)
如果你真的想要一个Global(这很少是一个好主意),你必须在全局范围内声明它(在所有函数和块之外。然后,你可以从任何地方设置它。
这是一个可以轻松应用于任何代码的示例。
var clickedButton = null; // Globally declared variable
$("button").on("click", function(){
clickedButton = this;
console.log(clickedButton.id);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn1">Button 1</button>
<button id="btn2">Button 2</button>
<button id="btn3">Button 3</button>
&#13;
答案 1 :(得分:1)
您可以在构造函数中设置它:
constructor() {
this.pressedButton = $(".btn.btn-primary.btn-sm");
this.events()
}
在需要的地方将其用作this.pressedButton
。