Javascript JS钩住自定义事件
我有一个用于.NET控件的客户端脚本。脚本钩住所有:复选框项以触发名为OnOptionItemSelected的事件Javascript JS钩住自定义事件,javascript,jquery,events,Javascript,Jquery,Events,我有一个用于.NET控件的客户端脚本。脚本钩住所有:复选框项以触发名为OnOptionItemSelected的事件 function ControlScript() { this.OnOptionItemSelected = function (e) { /* do something */ } this.Configure = function () { // hook change event of items in the input control
function ControlScript() {
this.OnOptionItemSelected = function (e) { /* do something */ }
this.Configure = function () {
// hook change event of items in the input control
$('#' + this.ControlID).find(":radio, :checkbox")
.on("change", this, this.OnOptionItemSelected);
}
}
(部分代码已删除)在页面的另一个地方,我得到了特定控件的客户端脚本,需要钩住OnOptionItemSelected事件。我该如何参与这项活动
var script = GetScriptForControl(ID);
if (script)
// hook script.OnOptionItemSelected to a custom function ????
我将假设GetScriptForControl返回ControlScript的一个实例。所以我要做的是:
if(script) {
oldOptionItemSelected = script.OnOptionItemSelected
script.OnOptionItemSelected = function(ev) {
/* before OptionItemSelected code HERE */
oldOptionItemSelected.call(script,ev);
/* after OptionItemSelected code HERE */
};
/* rebind the events */
script.Configure();
}
事实上,我找到了一个更符合我需要的答案:
function ControlClientSide()
{
this.CheckBoxClicked = function() { }
this.Configure = function() {
$('#checkBox100').change(function() { $(this).triggerHandler("CheckBoxClicked"); }.bind(this));
};
this.Configure();
};
var x = new ControlClientSide();
$(x).on("CheckBoxClicked", function() { alert( this.constructor.name + ' Hi'); })
.on("CheckBoxClicked", function() { alert( this.constructor.name + ' Hi2'); });
我唯一搞不清楚的是如何将“this”作为“CheckBoxClicked”事件处理程序中的复选框。目前,它被设置为ControlClientSide函数
请参见示例:您的代码不够清晰。它不返回值。请更清楚,您将需要一个“重新绑定”,它将关闭更改事件,并在加载项后绑定再次选中的OnOptionItems。