我正在使用一些使用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
答案 0 :(得分:0)
如果你遵循JQuery widget pattern,它会更容易。因为AJAX控件包裹一个元素,就像小部件一样,你可以通过用init方法编写一些设置来更容易地集成这两个元素:
_init: function() {
//store a control reference within the widget
this._control = $find(this.element.attr("id"));
}
然后,在您的小部件中,您可以通过this._control
。
如果你不能切换模型,解决这个问题的方法不是直接引用类型,而是实例...而不是将引用MyNameSpace.AjaxUserControl
传递给构造函数,传入一个实例,那么你可以这样做:
instance._onchange();
调用事件。