Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将onclick变量放入对话框函数中_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何将onclick变量放入对话框函数中,javascript,jquery,Javascript,Jquery,我有一个onclick事件,其中有一个值,我想发布到后端php脚本。只是不知道如何在对话框函数中获取它 function reorder(job_index)//<--------this fella { $('#dialog').dialog('open'); } $(document).ready(function(){ $(function() { $("#dialog").dialog({ bgiframe: true,

我有一个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');
            }

        }
    });
});
});

函数重新排序(作业索引)/您可以使用
.data()

将其存储为元素上的数据。您可以使用
将其存储为元素上的数据。data()

创建一个全局变量,将上次单击的作业索引存储在那里,然后在单击处理程序中从那里读取

var last_job_index;
function reorder(job_index)
{
    last_job_index = job_index;
    $('#dialog').dialog('open');
}
//snip
$.post("rpc.php",  {                       
    job_index: last_job_index,
    jobID: jobID,
    method: "reorder"
},

警告:这是一个非常不专业的解决方案(共享可变状态)

创建一个全局变量,将上次单击的作业索引存储在那里,然后在单击处理程序中从那里读取

var last_job_index;
function reorder(job_index)
{
    last_job_index = job_index;
    $('#dialog').dialog('open');
}
//snip
$.post("rpc.php",  {                       
    job_index: last_job_index,
    jobID: jobID,
    method: "reorder"
},

警告:这是一个非常不专业的解决方案(共享可变状态)

在下面的代码中,我使用的是一个函数,它允许您存储和检索索引

函数
索引
通过返回声明并返回另一个函数来创建一个。这意味着,一旦(外部)函数返回,变量
\u index
仍然可用(将其视为变量是在堆上而不是堆栈帧上分配的;即malloc ed),并且您可以看到,由于
}(),函数是自调用的位于函数的最后一行,因此在解析过程中立即返回

然后,当您再次调用函数
index
时(现在基本上是调用包含一个形式参数的内部函数,
ind
),您可以传入索引,如果传入,函数将把它存储在我前面提到的
\u 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');
            }

        }
    });
});

另一种方法是使用前面提到的
data
方法。这将允许您将索引直接存储为元素的一部分,如:

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');
            }

        }
    });
});

在下面的代码中,我使用了一个函数,它允许您存储和检索索引

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

然后,当您再次调用函数
index
时(现在您将基本上调用接受一个形式参数的内部函数,
ind
),您可以传入索引,如果传入,函数将把它存储在我前面提到的
\u 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');
            }

        }
    });
});

另一种方法是使用前面提到的
data
方法。这将允许您将索引直接存储为元素的一部分,如:

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');
            }

        }
    });
});

提示:在外部
ready
函数中有一个嵌套的
read
y函数。这是因为
$(function(){
$(document)相同。ready(function(){/code>提示:在外部
ready
函数中有一个嵌套的
read
y函数。这是因为
$(function()){
$(文档).ready(函数(){