Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-单击时未定义的函数调用_Javascript_Jquery - Fatal编程技术网

Javascript jQuery-单击时未定义的函数调用

Javascript jQuery-单击时未定义的函数调用,javascript,jquery,Javascript,Jquery,我想在单击事件上调用一个函数,我的同事定义了如下所示的函数。不知怎的,我无法访问它,怎么了 function Start(data) { this.move= function() { .... }; $('.button').click(function(){ this.move(); }); } 尝试此操作,您必须记住对主函数的引用 function Start(data) { var that = this; this.move = function

我想在单击事件上调用一个函数,我的同事定义了如下所示的函数。不知怎的,我无法访问它,怎么了

function Start(data) {

this.move= function() {
  ....
};

   $('.button').click(function(){

      this.move();
    });

}

尝试此操作,您必须记住对主函数的引用

function Start(data) {
var that = this;
this.move = function() {
  ....
};

   $('.button').click(function(){

      that.move();
    });

}

尝试此操作,您必须记住对主函数的引用

function Start(data) {
var that = this;
this.move = function() {
  ....
};

   $('.button').click(function(){

      that.move();
    });

}

单击函数中的该
是单击的元素。将对象的引用保存在函数外部的变量中并使用它:

function Start(data) {
    var self = this; //HERE

    this.move= function() {
        ....
    };

    $('.button').click(function(){

        self.move();
    });

}

这可能会为您提供有关上述修复的更多解释。

单击函数中的此
是单击的元素。将对象的引用保存在函数外部的变量中并使用它:

function Start(data) {
    var self = this; //HERE

    this.move= function() {
        ....
    };

    $('.button').click(function(){

        self.move();
    });

}

这可能会为您提供有关上述修复的更多解释。

另一种保持作用域的方法是使用


保持作用域的另一种方法是使用


在使用jQuery绑定的事件处理程序中,
引用绑定处理程序的DOM元素。看

您可以使用单击处理程序上的
函数#bind
覆盖jQuery的
绑定:

function Start(data) {
    this.move= function() {
        ....
    };

    $('.button').click(function(){
        this.move();
    }.bind(this));
}

请注意浏览器对
函数#bind
的支持——如果您针对较旧的浏览器,则需要一个polyfill,或者只需将
this
的值分配给另一个变量。

在使用jQuery绑定的事件处理程序中,
this
指绑定处理程序的DOM元素。看

您可以使用单击处理程序上的
函数#bind
覆盖jQuery的
绑定:

function Start(data) {
    this.move= function() {
        ....
    };

    $('.button').click(function(){
        this.move();
    }.bind(this));
}

注意浏览器对
函数#bind
的支持——如果您针对较旧的浏览器,您需要一个polyfill,或者只需将
的值分配给另一个变量。

您是否将jquery导入html?是否将jquery导入html?您比我更了解它<代码>$。代理
是更简洁的方法。你比我快<代码>$。代理是更简洁的方法。