Делаю небольшую вебморду для управления своим VPN сервером на Flask'е, с js знаком лишь слегка и битый час пытаюсь сделать так, чтобы можно было передать id элемента на который был клик (есть таблица, через кнопку можно удалять строки, отправив post запрос на сервер с id элемента, пред этим вылетает модальное окно для подтверждения действия)
function confirmModal(callback){
$('#ConfirmModal').modal('show');
$('#ConfirmModal-no').on('click', function () {
callback(false);
$('#ConfirmModal').modal('hide');
});
$('#ConfirmModal-ok').on('click', function () {
callback(true);
$('#ConfirmModal').modal('hide');
});
}
function send_request(some_id){
$.post('/remove_user', {'user_target': some_id});
}
$('.confirm_remove').on("click", function () {
var caller_id = this.id;
confirmModal(function (result) {
if (result){
send_request(caller_id)
}
})
});
Собственно, я перепробовал много вариаций, но так и не понял каким костылем можно передать caller_id функции send_request, не прибегая к глобальным переменным.
UPD: Все-таки сумел передать аргумент + избавился от дублирования обработчиков (спасибо за замечание от Anton Shchyrov) с помощью .one()
function confirmModal(callback, id){
$('#ConfirmModal').modal('show');
$('#ConfirmModal-no').one('click', function () {
callback(false, id);
$('#ConfirmModal').modal('hide');
});
$('#ConfirmModal-ok').one('click', function () {
callback(true, id);
$('#ConfirmModal').modal('hide');
});
}
function send_request(some_id){
$.post('/remove_user', {'user_target': some_id});
}
$('.confirm_remove').on("click", function () {
var caller_id = this.id;
confirmModal(function (result, id) {
if (result){
send_request(id)
}
}, caller_id)
});
Вы в функции confirmModal
при каждом вызове добавляете по одному обработчику для кнопок. В итоге, когда окно закрывается, у вас вызываются все навешенные обработчики со своими id.
Я не знаю, что это за метод modal
и нужно смотреть документацию по нему, как через него передать данные. Как вариант, использовать $("#ConfirmModal").data()
function confirmModal(id) {
$('#ConfirmModal').data({id: id}).modal('show');
}
$('#ConfirmModal-no').on('click', function() {
$('#ConfirmModal').modal('hide');
});
$('#ConfirmModal-ok').on('click', function() {
$('#ConfirmModal').modal('hide');
const id = $('#ConfirmModal').data('id');
send_request(id);
});
function send_request(some_id) {
$.post('/remove_user', {'user_target': some_id});
}
$('.confirm_remove').on("click", function() {
confirmModal(this.id)
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
мне нужно по нажатию лкм на выбранный элемент li его удалить, а следующий элемент встал на место удаленного
Когда открываю сайт напрямую, то все хорошо работает(скриншот 1), слайдер исправен, аккордеон открывается, НО как только я открываю сайт через...
Как создать файл css в intellij idea community edition?его просто нету во вкладке добавить
Есть SVG-карта страны с разбивкой по областямКаждая область это polygon