如何从jQuery调用Ajax控件事件

本文关键字:Ajax 控件 事件 调用 jQuery | 更新日期: 2023-09-27 18:16:01

我正在使用使用microsoft ajax工具包编写的一些控件。我想用jQuery在这些控件中触发一个事件。我希望它应该像触发jQuery的任何事件一样简单,但它似乎不起作用。下面是示例代码。

Ajax控制

/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("MyNameSpace");
MyNameSpace.AjaxUserControl = function(element) {
  MyNameSpace.AjaxUserControl.initializeBase(this, [element]);
}
MyNameSpace.AjaxUserControl.prototype = {
  initialize: function() {
  MyNameSpace.AjaxUserControl.callBaseMethod(this, 'initialize');
  }
},
dispose: function() {
  MyNameSpace.AjaxUserControl.callBaseMethod(this, 'dispose');
},
_onChange: function(evt) {
  alert('On Change event.');
  },
}
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
Jquery代码:

var myJqueryControl = (function ($, AjaxControl) {
  $(document).ready(function(){
  var ajaxEventProxy = Function.createDelegate(AjaxControl, AjaxControl._onChange);
  $("#JqueryCommandButton").click(ajaxEventProxy);
} (jQuery,MyNameSpace.AjaxUserControl));

它不工作,当按钮被点击,我不能看到警告消息在onchange。如果有任何指导,我将不胜感激。

谢谢CSC

如何从jQuery调用Ajax控件事件

如果遵循JQuery小部件模式,工作起来会容易得多。因为AJAX控件像小部件一样包装元素,所以可以更容易地将两者集成,方法是使用init方法编写一些设置:

_init: function() {
    //store a control reference within the widget
    this._control = $find(this.element.attr("id"));
}

然后,在您的小部件中,您可以通过this._control来引用控件。

如果你不能切换模型,解决这个问题的方法不是直接引用类型,而是引用实例…不是将引用MyNameSpace.AjaxUserControl传递给构造函数,而是传递一个实例,然后您可以这样做:

instance._onchange();

调用事件