, 나는 모두 가게에 당신을 허용하고 인덱스를 검색합니다 하나의 기능을 사용하고 있습니다.
함수 index
은 선언하고 다른 함수를 반환하여 closure을 생성합니다. 즉 변수 _index
은 계속 사용할 수 있습니다 () (외부 프레임) 함수가 반환되면 변수가 스택 프레임 대신 힙에 할당 된 것처럼 생각합니다 (예 : , malloc-ed). 가능한 경우 함수의 마지막 행에있는 }();
으로 인해 함수가 자체 호출하는 것을 볼 수 있습니다. 따라서 파싱하는 동안 즉시 반환됩니다.
index
을 다시 호출하면 (공식적인 인수 인 하나의 형식 인수 인 ind
을 호출합니다), 색인을 전달할 수 있으며 그렇게하면 함수는 _index
앞에서 언급 한 변수 ... 즉 외부 함수가 반환 된 후에도 사용할 수있는 변수입니다.
인수를 전달하지 않으면 (예 : index()
과 같은 함수를 호출하는 경우) 함수는 저장된 변수 만 반환합니다. 이 배후의 논리는 매개 변수가 전달되지 않으면 실제 인수 값이 undefined
이라는 것입니다. 따라서 함수는 값이 undefined
인지 확인하고 허용되는 경우 변수를 반환합니다.
그리고 btw, 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');
}
}
});
});
팁 : 외부 '준비'기능 내에 중첩 된'읽기 '기능이 있습니다. 왜냐하면'$ (function() {'은'$ (document) .ready (function() {'와 동일하기 때문입니다.) –
덕분에 – jason