我正试图在对话框中单击按钮时调用带有参数的javascript函数。这是我可以在这里发布的简化版本的流程: 1)单击HTML按钮,将函数和按钮ID作为参数传递给“确认”对话框。 2)在确认对话框中单击“是”,调用传入的函数,该函数只更新HTML按钮的ID和值。
由于某种原因,对话框继续使用原始参数,并且永远不会获得更新的参数。我认为代码可以更好地解释这个问题。以下是HTML代码段:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery-ui-1.7.2.custom.js"></script>
<div id="confirmDialog"></div>
<div id="div_input">
<input type="button" id="1" value="1" onClick="javascript:confirmAction(updateButton, this.id)" />
</div>
这是javascript片段:
function confirmAction(onSuccessFunction, functionArg)
{
var message = "Are you sure?";
$('#confirmDialog').html(message);
$('#confirmDialog').dialog({
modal: true,
autoOpen: false,
title: 'Confirm',
width: 400,
height: 150,
buttons: {
'Yes': function() {
$(this).dialog('close');
onSuccessFunction(functionArg);
},
'No': function() {
$(this).dialog('close');
}
}
});
$("#confirmDialog").dialog('open');
};
function updateButton(buttonId)
{
alert(buttonId);
var buttonHTML = '';
if(buttonId == '1')
{
buttonHTML = "<input type='button' id='2' value='2' onClick='javascript:confirmAction(updateButton, this.id)' />";
}
else
{
buttonHTML = "<input type='button' id='1' value='1' onClick='javascript:confirmAction(updateButton, this.id)' />";
}
document.getElementById("div_input").innerHTML = buttonHTML;
};
confirmAction(...)始终使用buttonId作为“1”调用updateButton(...)。如果我直接调用updateButton(...)'onClick',它工作正常。我在这里错过了什么吗?
答案 0 :(得分:2)
我也在jQuery论坛上发布了这个 - https://forum.jquery.com/topic/jquery-dialog-callback-function-with-arguments。事实证明,这是旧版jQuery中的一个错误,现在已经修复。