Javascript函数在单击时不触发

Javascript函数在单击时不触发,javascript,jquery,events,Javascript,Jquery,Events,我有一个Javascript函数,点击一个按钮,post请求将被发送到另一个文件。如果此请求成功,按钮将被禁用,其颜色将发生变化。也将返回一个警报 $(document).on("click", ".employeeComplete", employeeReg); function employeeReg(self, name){ self = $(self); var stats = {}; stats['age'] = 'age

我有一个Javascript函数,点击一个按钮,post请求将被发送到另一个文件。如果此请求成功,按钮将被禁用,其颜色将发生变化。也将返回一个警报

$(document).on("click", ".employeeComplete", employeeReg);

    function employeeReg(self, name){
        self = $(self);
        var stats   = {};
        stats['age']  = 'age';
        stats['name'] = name;
        $.post('employee', stats)
        .done(function(e){
            alert("hello");
            if(e){
                alert("This employee has been registered.");
                self.attr('disabled', 'disabled');
                self.css('background-color', '#111111');

            }
            else{
                alert("Error.");
            }
        })
        .fail(function(){
            alert("Error.");
        });

        self.attr("disabled", "disabled");
    }
在第一行中,我之前在我的函数名后面有偏执:

$(document).on("click", ".employeeComplete", employeeReg());
但这是在页面加载时启动的功能,而不是在点击按钮时启动的。删除括号后,该函数在单击按钮或页面加载时根本不起作用。谢谢

编辑

我的sselector拼写错误,但只返回警报,没有按钮更改或禁用

当我将
self
更改为
this
$(this)
(还从函数中删除了
self
变量和参数)时,我收到以下控制台错误:

未捕获类型错误:非法调用

事件回调的第一个(通常是唯一的)参数是事件数据本身。这是由浏览器JS引擎完成的,您无法影响或选择自己

要在回调上下文中单击项目,您可以始终引用
this

参见下面的示例(为了制作一个可运行的演示,我已经注释掉了ajax部分,目的是演示如何正确使用
this

$(文档)。在(“单击“,”.employeeComplete“,employeeReg”);
职能雇员(事件){
var self=$(这是);
var stats={};
统计数据['age']='age';
统计数据['name']=name;
/*$.post('employee',stats)
.完成(功能(e){
警惕(“你好”);
如果(e){
警报(“该员工已注册”);
self.attr('disabled','disabled');
css('background-color','#111111');
}
否则{
警惕(“错误”);
}
})
.fail(函数(){
警惕(“错误”);
});*/
警报(“该员工已注册”);
css('background-color','#111111');
自身属性(“禁用”、“禁用”);
}


单击测试
您确定您的类选择器与您正在单击的元素匹配吗?首先检查您的选择器是否有效(即,正在单击的元素的类为“employeeComplete”)。我们无法查看您的HTML,因此无法为您验证它。其次,检查您的控制台是否有错误。第三,在JS中设置一个断点,检查它是否真的没有被触发jQuery事件侦听器回调的第一个参数是事件对象。您可以共享您的HTML吗,听起来像
。employeeComplete
dont existok因此我的选择器是错误的,现在它会在单击按钮时返回警报,但按钮不会禁用或更改颜色@JamesThorpe@jrdev没问题-如果有帮助,请记住将答案标记为“已接受”,谢谢:-)