我目前正在为jquery对话框定义一个变量的按钮数量,如下所示:
var buttonNames = buttonNamesString.split("|");
var buttonsOpts = {};
for (i = 0; i < buttonNames.length; i++) {
buttonsOpts[buttonNames[i]] = function() { $(this).dialog("close");__doPostBack(postbackControlID, buttonNames[i]);}
}
以下是初始化对话框的代码。请注意,使用了 buttonsOpts 参数传递了不确定数量的按钮。
var parentElement = popupControl.parent();
popupControl.dialog({
autoOpen: false,
modal: true,
buttons: buttonsOpts,
hide: "explode",
open:function(type, data){
$(this).parent().appendTo(parentElement);
popupControl.css({visibility: "visible"});
}
});
问题是当对话框中的按钮被点击时,由于i已经增加到最大值,因此buttonNames[i]返回空值。
函数如下:function() { $(this).dialog("close");__doPostBack(postbackControlID, buttonNames[i]);}
我们能否像在.Net事件中使用sender对象那样,在Javascript中从事件代码内部访问触发事件的对象。这将解决问题。
请问我该如何克服这个问题?谢谢。