Путаница обратного вызова Javascript
-
13-10-2019 - |
Вопрос
Я использую DataTables для отображения данных строк, в последнем столбце справа есть 2 изображения: одно для редактирования и одно для удаления.Чтобы перехватить событие щелчка, я использую:
$('#datatable tbody tr a.delete img').live( 'click', function () {
});
Друг дал мне этот код, чтобы попробовать..
function fancyAlert(msg) {
jQuery.fancybox({
'modal' : true,
'content' : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input style=\"margin:3px;padding:0px;\" type=\"button\" onclick=\"jQuery.fancybox.close();\" value=\"Ok\"></div></div>"
});
}
function fancyConfirm(msg,callback) {
var ret;
jQuery.fancybox({
modal : true,
content : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input id=\"fancyConfirm_cancel\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Cancel\"><input id=\"fancyConfirm_ok\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Ok\"></div></div>",
onComplete : function() {
jQuery("#fancyConfirm_cancel").click(function() {
ret = false;
jQuery.fancybox.close();
})
jQuery("#fancyConfirm_ok").click(function() {
ret = true;
jQuery.fancybox.close();
})
},
onClosed : function() {
callback.call(this,ret);
}
});
}
function fancyConfirm_text() {
fancyConfirm("Ceci est un test", function(ret) {
alert(ret)
})
}
Это работает, когда я использую его следующим образом:
$('#datatable tbody tr a.delete img').live( 'click', function () {
if (!fancyConfirm("Are you sure you want to delete this record?"))
e.preventDefault();
});
Меня смущает часть обратного вызова, потому что, когда я нажимаю «Отменить», поле исчезает, но страница по-прежнему становится серой и заблокирована.Я хочу сделать следующее: если пользователь нажмет кнопку «Отмена», чтобы завершить работу и вернуться в нормальное состояние, и если пользователь нажмет «ОК», тогда мне нужно будет передать var rowID в файл «delete_row.php»...Но для меня это новая территория..Если бы это была простая html-ссылка, я мог бы получить .val и все готово, но в DataTables у меня нет такой возможности..
Может ли кто-нибудь здесь указать мне в правильном направлении?Я перегуглил это до смерти, но не смог найти информацию о своих требованиях к использованию.
Решение
А fancyConfirm
функция ожидает функцию обратного вызова, если она не указана, в FancyBox возникает ошибка onclosed
событие, которое может объяснить, почему оно остается серым.
Попробуйте изменить вызов на:
fancyConfirm("Are you sure you want to delete this record?", function(ret) { })