在类中添加全局jquery变量

时间:2018-04-19 21:01:56

标签: javascript jquery

我有以下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定义为全局变量的任何建议吗?

感谢您的回复!

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:1)

您可以在构造函数中设置它:

constructor() {
    this.pressedButton = $(".btn.btn-primary.btn-sm");
    this.events()
}

在需要的地方将其用作this.pressedButton

文档:Classes - JavaScript | MDN