사이트 전체에 add-to-bag 단추가 있으며 동적 팝업이 방금 추가 된 내용을 인식 한 것처럼 보이게 한 다음 사라집니다. 다른 추가 버튼을 클릭하면 이전 대화 상자의 제한 시간이 첨부됩니다. 이 문제를 해결하기 위해 다음 대화 상자에 마지막 10,000 개의 setTimeout이 있습니다. 그 중 하나는 마지막 것부터 남았습니다 (트릭을하지는 않습니다).다음 대화 상자에서 jquery 대화 상자의 시간 제한을 재설정하는 방법은 무엇입니까?
대화는 제품 데이터와 외부 닷넷 페이지에서 동적 콘텐츠로드 대화 상자가 addToBagDialogVar에로드되는 이유 그래서 에 사용할 수 CloseDialog와입니다 해당 페이지 내부에 가까운 링크를 가지고있다$(document).ready(function()
{
// Create object for future dialog box - so it's available to the close method
var addToBagDialogVar = $('<div id="addToBagDialogBox"></div>');
var autoCloseTimeout = 10000;
var dialogTimer;
$(".addToBagPU").click(function (e)
{
var result = "";
$.get(this.href, function (data) { SetData(addToBagDialogVar, data); });
return false;
});
// Start listening for the close link click
$(document).on("click", "#bagPUCloseLink", function (event)
{
event.preventDefault();
CloseDialog(addToBagDialogVar);
});
function SetData(addToBagDialogVar, data)
{
result = data;
var regex = data.match("{{(.*)}}");
var bagCount = regex[1];
addToBagDialogVar.html(result).dialog({
open: function()
{
clearTimeout(dialogTimer);
$(".ui-dialog-titlebar-close").hide();
SetBagCount(bagCount),
dialogTimer = setTimeout(function() { CloseDialog(addToBagDialogVar); }, autoCloseTimeout);
},
show: { effect: "fadeIn", duration: 800 },
close: function() { clearTimeout(dialogTimer); },
width: 320
});
}
function CloseDialog(closeThisDialog)
{
closeThisDialog.dialog("close");
closeThisDialog.dialog("destroy").remove();
}
});
.
모두 잘 작동합니다. 그것은 일어나고있는 것처럼 보이지 않는 타이머의 재설정입니다. 한 페이지 아래로 가서 각 가방을 가방에 추가하면 세 번째 또는 네 번째 대화 상자는 첫 번째 대화 상자 setTimeout을 사용하고 있기 때문에 잠시만 있습니다.
나는 읽고 기억하고 너무 많은 다른 방법을 시도하고 지금 내 두뇌가 울창합니다.
동적 대화 상자이며 대화 상자의 고유 ID를 사용하여 동작을 변경하지 않은 대화 내용의 ID "addToBagDialogBox"에 난수를 추가했습니다. 나는 openTimeout에서 실행되는 첫 번째 메소드로 clearTimeout을 가지고 있다고 생각했을 것입니다. 다음 대화 상자가 작성되기 전에 타이머를 재설정 하겠지만, 분명히 누락되었습니다. –
setTimeout()을 호출 할 때마다 새 타이머가 만들어지고 실수로 이전 타이머의 ID를 잃어 버린 경우에도 이전에 만든 모든 타이머에 영향을 미치지 않습니다.또한, 중복이 발생할 수 있기 때문에 난 임의의 숫자에 대해 조언한다. 새 대화 상자를 만들 때마다 증가하는 카운터를 사용하는 것이 더 안정적입니다. – GreatBigBore