我想用jquery UI对话框创建弹出窗口,参数recordtype将决定要加载的对话框的内容以及按下对话框按钮时要调用的函数。
function showPopup(div_id, w, h, title, recordtype, recordid) {
$(div_id).dialog({
height: h,
width: w,
title: title,
modal: true,
autoOpen: true
});
//----extend the ui feature-----
$.extend($.ui.dialog.prototype, {
'addbutton': function(buttonName, func) {
var buttons = this.element.dialog('option', 'buttons');
buttons[buttonName] = func;
this.element.dialog('option', 'buttons', buttons);
}
});
//----load content page------
if (recordtype == 'research') {
$(div_id).load('ResearchContents.aspx?ID=' + recordid);
$(div_id).dialog('addbutton', 'Save', onclick);
$(div_id).dialog('addbutton', 'Delete', onclick);
}
else if (recordtype == 'course') {
$(div_id).load('CourseContents.aspx?ID=' + recordid);
$(div_id).dialog('addbutton', 'Create', onclick);
$(div_id).dialog('addbutton', 'Delete', onclick);
}
}
//-----How to pass parameters to onClick? ----------
function onclick(recordtype, recordid) {
if(recordtype=='research' && recordid==-1)
createResearch();
else if(recordtype=='research' && recordid>-1)
updateResearch();
else if(recordtype=='course' && recordid==-1)
createCourse();
else if(recordtype=='course' && recordid>-1)
updateCourse();
}
我的问题是,如何将参数recordtype和recordid传递给onClick?
答案 0 :(得分:3)
如果你只是将refence作为回调传递给函数,那么在执行事件处理程序时,你唯一的参数就是ony jquery,这是一个Event对象。
将对“onClick”的调用包装到一个匿名函数中,这样你就可以调用方法传递你想要的参数:
$(div_id)
.dialog('addbutton', 'Save', function() {
onclick(recordtype, recordid);
});