У меня есть скрипт, который открывает окно подтверждения при нажатии на ссылку:
html:
<a href="validation/object_1/" class="validation">Validate</a>
<a href="validation/object_2/" class="validation">Validate</a>
jquery
$('.validation').on('click', function() {
return confirm('Are you sure tou want to validate this ' + $(this).attr('href').split("/")[1] + ' ?');
});
У меня есть другой скрипт jqueryкоторый загружает ожидающую анимацию (довольно сложный сценарий, который я сам не кодировал и включил в свое приложение Системы управления контентом)
Когда я нажимаю на ссылку, открывается всплывающее окно подтверждения, и когда я нажимаю "«Отмена», я не хочу запускать анимацию ожидания.
как я могу предотвратить запуск любого другого скрипта jquery после нажатия кнопки Отмена?
edit : вот полный скрипт с анимацией загрузки:
(function($) {
$('.validation').on('click', function() {
return confirm('Are you sure tou want to validate this ' + $(this).attr('href').split("/")[1] + ' ?');
});
/**
* Represents the loading animation.
*/
Loadinganimation = function(context, settings) {
this.settings = settings;
this._init = function(context) {
// Exclude subselectors.
if (settings.subselector != '') {
var subselectorSuffix = ' ' + settings.subselector;
} else {
var subselectorSuffix = '';
}
// Show on href click!
if (Drupal.settings.jquery_loadinganimation.show_on_href) {
// Exclude some further cases that shell not trigger.
$(context)
.find("a[href]" + settings.subselector)
.not('a[href*="javascript:"]')
.not('a[href^="#"]')
//.not('a[target="_blank"]')
.not(".validation")
.not('a[href^="http://fdrav.sncf.fr/system/files"]')
.not(".noLoadingAnimation")
.not(".views-submit-button")
.each(
function(i, element) {
// Only trigger links that have no js events registered.
if (typeof $(this).data("events") == 'undefined'
|| jQuery.isEmptyObject($(this).data("events"))) {
$(this)
.click(
function(eventObject) {
// Nicht bei Öffnen in neuem Tab (Strg+Klick)
if (!eventObject.ctrlKey) {
Drupal.behaviors.jquery_loadinganimation.Loadinganimation
.show();
}
});
}
});
}
// Show on form submit
if (Drupal.settings.jquery_loadinganimation.show_on_form_submit) {
// Only execute if no other js events are registered to prevent cases
// where page is not being reloaded and layer does not close though.
$(context).find("form" + subselectorSuffix).not(".noLoadingAnimation").not(".views-submit-button").not(".validation").submit(function() {
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.show();
$(context).ajaxStop(function() {
// Hide loading animation after ALL ajax events have finished
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.hide();
});
});
}
// Show on AJAX
if (context == document) {
// Global context!
if (Drupal.settings.jquery_loadinganimation.show_on_ajax) {
// Register loading animations for ajax events!
$(context).ajaxStart(function() {
// Show loading animation on request.
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.show();
});
$(context).ajaxStop(function() {
// Hide loading animation after finish.
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.hide();
});
}
}
// Hide on animation click!
if (Drupal.settings.jquery_loadinganimation.close_on_click) {
$("div#loadinganimation").on('click', function() {
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.hide();
});
}
// Hide on ESC press.
if (Drupal.settings.jquery_loadinganimation.close_on_esc) {
$(document).keyup(function(event) {
var keycode = event.which;
if (keycode == 27) { // escape, close box
Drupal.behaviors.jquery_loadinganimation.Loadinganimation.hide();
}
});
}
};
// Initialize!
this._init(context);
// Register global Drupal.behaviors.jquery_loadinganimation.Loadinganimation
// object after init!
Drupal.behaviors.jquery_loadinganimation.Loadinganimation = this;
/**
* Displays the loading animation.
*/
this.show = function() {
// Only show if not already shown.
if ($("div#loadinganimation").length == 0) {
$("body")
.append(
'<div id="loadinganimation"><div class="loadinganimation-box"><div class="loadinganimation-outer"><div class="loadinganimation-inner"> </div></div><span class="loading-text">'+ Drupal.t('Merci de patienter ...', {}, {context: "jquery_loadinganimation"}) +'</span></div></div>');
}
};
/**
* Hides the loading animation.
*/
this.hide = function() {
$("div#loadinganimation").remove();
};
};
/**
* Initialization
*/
Drupal.behaviors.jquery_loadinganimation = {
/**
* Run Drupal module JS initialization.
*
* @param context
* @param settings
*/
attach : function(context, settings) {
// Initialize general loading animation.
Drupal.behaviors.jquery_loadinganimation.Loadinganimation = new Loadinganimation(
context, settings.jquery_loadinganimation);
}
};
})(jQuery);