jQuery/JavaScript在OOP中添加事件触发器
我使用以下结构在JavaScript中设置我的对象/类: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) { $
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%的时间都是在跟踪事件或快捷方式