使用jQuery对话框的参数回调函数

时间:2012-07-05 16:20:53

标签: jquery jquery-ui

我正试图在对话框中单击按钮时调用带有参数的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',它工作正常。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

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