javascript - 如何将 onclick 变量放入对话框函数中

标签 javascript jquery

我有一个 onclick 事件,其中有一个值,我想将其发布到后端 php 脚本。只是不确定如何在对话框功能中获取它。

function reorder(job_index)//<--------this fella
{
        $('#dialog').dialog('open');
}
$(document).ready(function(){
    $(function() {
        $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 250,
        width: 600,
        modal: true,
        buttons: {
            'Yes, use the number above': function() {
            var jobID=$("#jobnumber").val();
            $.post("rpc.php",   {           
                                job_index:job_index,// <-------to here          
                                jobID:jobID,
                                method: "reorder"
                                },
    function(data,textstatus)
        {
        alert(data.message);    
        }, "json");
            },
            'No, create a new number for me': function() {
                $(this).dialog('close');
        },
            Cancel: function() {
                $(this).dialog('close');
            }

        }
    });
});
});

该值为 job_index。有什么建议吗?

谢谢

最佳答案

在下面的代码中,我使用一个函数来存储和检索索引。

函数index正在创建一个closure通过返回声明并返回另一个函数。这意味着变量 _index 仍然可用(将其视为变量分配在堆上而不是堆栈帧上;即 malloc )一次(外部)函数已返回,正如您所看到的,由于函数最后一行的 }(); ,该函数是自调用的,因此在解析期间立即返回。

然后,当您再次调用函数 index 时(现在您基本上将调用采用一个形式参数 ind 的内部函数),您可以传入您的索引,如果您这样做,该函数会将其存储在我之前提到的 _index 变量中......即外部函数返回后仍然可用的变量。

如果您不传入参数(即像这样调用函数:index()),则该函数仅返回您存储的变量。其背后的逻辑是,如果未传递参数,则实际参数的值为未定义。因此,该函数会检查该值是否未定义,如果是,则仅返回您的变量。

顺便说一句,您在外部 ready 函数内有一个嵌套的 ready 函数。这是因为 $(function() {$(document).ready(function(){) 相同。我在下面的代码中修复了这个问题:

var index = function () {
    var _index;
    return function (ind) {
        if (typeof ind !== "undefined") {
            _index = ind;
        }
        return _index;
    };
}();

function reorder(job_index)
{
    index(job_index);
    $('#dialog').dialog('open');
}

$(function () {
    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 250,
        width: 600,
        modal: true,
        buttons: {
            'Yes, use the number above': function () {
                var jobID = $("#jobnumber").val();
                $.post("rpc.php", {
                    job_index: index(),                 
                    jobID: jobID,
                    method: "reorder"
                },

                function (data, textstatus) {
                    alert(data.message);
                },
                "json");
            },
            'No, create a new number for me': function () {
                $(this).dialog('close');
            },
            Cancel: function () {
                $(this).dialog('close');
            }

        }
    });
});
<小时/>

另一种方法是使用 nickfdata 方法。提及。这将允许您将索引直接存储为元素的一部分,如下所示:

function reorder(job_index)
{
    $('#dialog').data("job", job_index).dialog('open');
}

$(function () {
    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 250,
        width: 600,
        modal: true,
        buttons: {
            'Yes, use the number above': function () {
                var jobID = $("#jobnumber").val();
                $.post("rpc.php", {
                    job_index: $("#dialog").data("job"),                 
                    jobID: jobID,
                    method: "reorder"
                },

                function (data, textstatus) {
                    alert(data.message);
                },
                "json");
            },
            'No, create a new number for me': function () {
                $(this).dialog('close');
            },
            Cancel: function () {
                $(this).dialog('close');
            }

        }
    });
});

关于javascript - 如何将 onclick 变量放入对话框函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893093/

相关文章:

javascript - 如何将两个具有不同参数的函数的代码结合起来?

javascript - 我的注入(inject)提供者出了什么问题?

javascript - 带有可删除属性的jquery动态div添加

javascript - JQuery 可以在 .html 上工作,但不能在 .php 上工作

javascript - 在 jQuery 中弹出预先挂起的 div 项目(在消息接收时)

javascript - React 函数中的 setState 未在 Promise 方法中更新

javascript - 如何设置window.location.href

javascript - 如何使用另一个网格为网格中的特殊单元格创建单元格编辑器,并在 ExtJs 中从中选择值?

javascript - 存储 textarea 的换行符,存储到数据库并显示在前端?

javascript - 当元素位于变量内部时如何修改元素的一部分