Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
jQuery/JavaScript在OOP中添加事件触发器_Javascript_Jquery_Javascript Events - Fatal编程技术网

jQuery/JavaScript在OOP中添加事件触发器

jQuery/JavaScript在OOP中添加事件触发器,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我使用以下结构在JavaScript中设置我的对象/类: SelectUser = function(instanceID) { this._instanceID = instanceID; // Initialize this.initialize(); } SelectUser.prototype = { initialize: function () { ... }, update(userID) { $

我使用以下结构在JavaScript中设置我的对象/类:

SelectUser = function(instanceID) {
    this._instanceID = instanceID;

    // Initialize
    this.initialize();
}

SelectUser.prototype = {
    initialize: function () {
        ...
    },

    update(userID) {
        $('#hidden-field-' + this._instanceID).val(userID);
    }
}
这使我可以说:

$selectUser = new SelectUser(1);
SelectUser
对象之外,每次更改隐藏字段的值时,我都需要执行一些不同的代码(每个
SelectUser
实例)。我的第一个想法是尝试:

<script type="text/javascript">
    $(document).ready(function () {
        $selectUser = new SelectUser(1);
        $selectUser2 = new SelectUser(2);

        $('#hidden-field-1').change(function () {
            alert('Something');
        });

        $('#hidden-field-2').change(function () {
            alert('Something else');
        });
    });
</script>

$(文档).ready(函数(){
$selectUser=新的selectUser(1);
$selectUser2=新的SelectUser(2);
$('#hidden-field-1')。更改(函数(){
警惕(“某物”);
});
$('#hidden-field-2')。更改(函数(){
警惕(“其他事情”);
});
});
但是,不会触发警报。我的下一个想法是在
SelectUser
对象/类中的update函数/方法上添加一个事件触发器。然后,我可以为每个实例订阅此事件,并执行一些不同的代码

我该怎么做?我已经使用JavaScript很多年了,但是我对JavaScript中的jQuery和OOP还比较陌生。

不会触发
change
事件,因为您是以编程方式更改它的,但是您可以自己触发事件,以便为它绑定的所有处理程序都可以运行。为此,请使用以下方法:

$('#hidden-field-' + this._instanceID).val(userID).change();
要触发事件,您有几个选项,触发它并弹出气泡(没有任何参数只是一个快捷方式)。此外,如果您只想直接在元素上触发事件处理程序,但不想让它冒泡或执行本机操作……但99%的时间都是在跟踪事件或快捷方式