Итак, у меня есть веб-приложение, над которым я работаю, и у меня есть раздел приложения с кнопкой развертывания, которая запускает модальный. В модальном режиме у меня есть еще две кнопки, одна для подтверждения и одна для отмены.Кнопка приращения и стрельбы несколько раз при нажатии
Когда модальный запуск и я нажимаю одну из кнопок, он срабатывает один раз. Тем не менее, моя проблема в том, что если я выйду из модального, снова откройте его и снова нажмите кнопку, он дважды запустит кнопку. Это будет продолжаться, если я повторю процесс, поэтому следующий щелчок вызовет три клика и т. Д. И т. Д.
Я пробовал использовать unbind
и one
безрезультатно в jQuery, и в данный момент я не понимаю.
Вот соответствующий jQuery для этого раздела. Я также могу прикрепить файл руля, который я использую, если это поможет.
JQuery:
//open modal, present OK and Cancel buttons
$(".inventory").on('click', 'button.deploy', function() {
console.log('DEPLOY')
var machine = $(this).data("machine");
var message = "Are you <b>SURE</b> you want to deploy the following machine:\n\n<b>" + $(this).data("machine") + "</b>";
var newNetwork = $(this).parent().siblings(".select-option").find("option:selected").val();
var currentDefault = $(this).parent().siblings(".select-option").attr('defaultValue');
if (currentDefault !== newNetwork) {
message += "\n\nChanging the network from: \n\n " + currentDefault + " -> <b>" + newNetwork + "</b>\n\n";
}
else {
message += "\n\nRestarting with the network:\n\n<b>" + currentDefault + "</b>\n\n";
}
message += "<i>NOTE: Any other network changes made to other machines will result in possible changes "
message += "the next time there is a full deploy.</i>"
$("#reset-message").html(message);
$(".jquery-modal.blocker.current").show();
$("div #reset-modal.modal").show();
$("div #reset-modal").on('click', "#deploy-cancel", function() {
$(".jquery-modal.blocker.current").hide();
$("div #reset-modal.modal").hide();
console.log('CANCEL')
});
$("div #reset-modal").on('click', "#deploy-confirm", function() {
$(".jquery-modal.blocker.current").hide();
$("div #reset-modal.modal").hide();
console.log('CONFIRM')
});
Приложить модальные события вне ** $ на („нажмите“) ** или уничтожить модальность на шкурой/близко и воссоздать его в случае необходимости («инвентаризации.»). , На данный момент вы, кажется, скрываете модальность и повторно используете его, но каждый раз, когда вы его показываете, добавляете новый набор обработчиков кликов. – JonSG
Так что мне нужно нажать кнопку 'button.deploy', чтобы вызвать презентацию кнопок' cancel' и 'confirm', а также открытие модального. Как это сделать, если эти события не содержатся в событии клика для кнопки развертывания? – Jason
@JonSG Ты спасатель! Просто понял это. Огромное спасибо. – Jason