일부 AJAX 콘텐츠에서 페이지로 움직이는 클릭 이벤트가 있습니다.이벤트가 완료된 후 jquery undelegate click 이벤트가 발생했습니다.
이 콘텐츠가 공개되고 사용자가 프로세스를 활성화 한 동일한 링크를 클릭하면 프로세스를 취소하고 현재 열려있는 즉시 콘텐츠를 닫으려고합니다.
현재 현재 열린 플라이 아웃은 '닫기'링크를 클릭하거나 시퀀스의 다른 플라이 아웃 링크를 클릭하여 닫힙니다. 사용자가 현재 플라이 아웃 링크를 클릭하면 현재 플라이 아웃을 닫고 싶습니다.
// Close fly out function
function closeFlyout() {
$('.fly_container').animate({
'right': '-332'
}, 300, 'swing', function() {
$(this).detach();
/* TODO: z-index issues in IE7, IE6
$('.dark_overlay').fadeOut(300, function() {
$(this).remove();
});
*/
});
};
$('.widget').delegate('.widget .fly_out', 'click', function() {
/*
TODO: z-index issues in IE7, IE6
$('body').prepend('<div class="dark_overlay" />');
*/
var $widget = $(this).closest('.widget');
var $flyOutIndex = $(this).index('.fly_out');
if ($flyOutIndex == 0) {
$flyOutURL = 'Content/HTMLSnippets/Flyouts/Priceassessment/product_order.htm';
} else if ($flyOutIndex == 1) {
$flyOutURL = 'Content/HTMLSnippets/Flyouts/PriceHistory/price_history_comparisons.htm';
} else if ($flyOutIndex == 2) {
$flyOutURL = 'Content/HTMLSnippets/Flyouts/PriceHistory/price_history_scenarios.htm';
} else if ($flyOutIndex == 3) {
$flyOutURL = 'Content/HTMLSnippets/Flyouts/PriceHistory/price_history_analysis.htm';
}
$('.current').removeClass('current');
$(this).addClass('current');
// Close any open flyouts
closeFlyout();
$.ajax({
type: 'GET',
url: DashboardApplicationRoot + $flyOutURL,
dataType: 'html',
cache: true,
success: function(data) {
$($widget).prepend(data);
$('.fly_container').animate({ 'right': '0' }, 300);
$('.scroll').jScrollPane();
$('.striped li:nth-child(even)').addClass('odd');
}
});
return false;
});
// Close fly out function
$('.widget').delegate('.fly_container .close', 'click', function() {
closeFlyout();
$('.current').removeClass('current');
return false;
});
스마트 한 닉 :) – RyanP13
동일한 코드로 어떻게 링크가 현재 클릭하지 않으면 새 플라이를 열기 전에 현재 플라이 아웃이 열릴 때까지 기다리는 것이 좋습니다? – RyanP13
@ RyanP13 - 대기열에 넣거나 다른'.fly_out' 클릭을 무시하고 싶습니다. –