J'ai un événement de clic qui anime un contenu AJAX sur une page.Evénement de cliquage jquery undelegate après la fin de l'événement
Une fois que ce contenu a été révélé et qu'un utilisateur clique sur le même lien que celui qui a activé le processus, je veux maintenant inverser le processus et fermer le contenu de sortie actuellement ouvert.
Au moment de la fermeture de l'ouverture actuellement ouverte, vous pouvez soit cliquer sur un lien de fermeture, soit cliquer sur un autre lien de sortie de la séquence. Si un utilisateur clique sur le lien fly out actuel, je veux que le courant s'envole pour se fermer.
// 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;
});
Smart one Nick :) – RyanP13
Avec le même code, comment est-ce que j'attends jusqu'à ce que le vol courant soit ouvert avant d'ouvrir un nouveau vol si on clique sur un lien qui n'est pas celui en cours? – RyanP13
@ RyanP13 - Vous voulez les mettre en file d'attente, ou ignorer les autres clics '.fly_out' pendant que ça fonctionne? –