我有一个 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');
}
}
});
});
<小时/>
另一种方法是使用 nickf 的 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');
}
}
});
});
关于javascript - 如何将 onclick 变量放入对话框函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893093/