0

.NET コントロール用のクライアント側スクリプトがあります。このスクリプトは、すべての :checkbox 項目をフックして、OnOptionItemSelectedというイベントをトリガーします。

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 ????
4

2 に答える 2

0

私は実際に私のニーズにより適した答えを見つけました:

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'); });

私が理解できない唯一のことは、「これ」を「CheckBoxClicked」イベントハンドラーのチェックボックスにする方法です。現在、ControlClientSide 関数に設定されています。

例を参照してください: http://jsfiddle.net/KC5RH/3/

于 2013-11-13T17:59:20.283 に答える