3

我正在尝试通过单击对话框中的按钮来调用带有参数的 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(...) 总是调用 updateButton(...) 并且 buttonId 为 '1'。如果我直接调用 updateButton(...) 'onClick',它工作正常。我在这里错过了什么吗?

4

1 回答 1

2

我也在 jQuery 论坛上发布了这个 - https://forum.jquery.com/topic/jquery-dialog-callback-function-with-arguments。事实证明,这是旧版本 jQuery 中的一个错误,现已修复。

于 2012-07-06T01:42:40.303 回答